I would like to integrate the following,
$$f(x,y) = \frac{1}{(a - x)^2 + b (y-x^2)^2},$$
where $a>0$ and $b>0$ between definite bounds to obtain an analytic result ideally. I've tried the following,
Assuming[{a > 0, b > 0, xlower < xupper, ylower < yupper},
Integrate[1 / ((a - x)^2 + b (y - x^2)^2), {x, xlower, xupper},
{y, ylower, yupper}]]
But the calculation hangs and doesn't seem to return anything. It may be that an analytic result for such an integral does not exist and so I am unsurprised in a way.
I've also tried to numerically integrate this function for $a=1$ and $b=100$ (it's the inverted Rosenbrock function which is used to test optimisation algorithms and so I'm not surprised I'm running into trouble) but I seem to get hugely variable results dependent on algorithm settings.
The following returns 11.74... but this result is different to Python's default double integrator and so am not sure what to trust.
NIntegrate[1/((1 - x)^2 + 100 (y - x^2)^2), {x, -2, 4}, {y, -1, 6},
AccuracyGoal -> 200000, MaxRecursion -> 100000, MaxPoints -> 10000000]
Any tips on how to calculate this integral either analytically or numerically would be well received!
Edit: I've tried Monte Carlo and Quasi-Monte Carlo approaches (and also adaptive approaches) and all methods seem to return different results.
For example,
NIntegrate[1/((1 - x)^2 + 100 (y - x^2)^2), {x, -2, 4}, {y, -1, 6},
AccuracyGoal -> 200000, MaxRecursion -> 100000,
MaxPoints -> 10000000, Method -> "MonteCarlo"]
yields 5.19... but
NIntegrate[1/((1 - x)^2 + 100 (y - x^2)^2), {x, -2, 4}, {y, -1, 6},
AccuracyGoal -> 200000, MaxRecursion -> 100000,
MaxPoints -> 10000000, Method -> "AdaptiveQuasiMonteCarlo"]
yields 1.89...
This integral is obviously pretty pathological and is likely why it is used to test optimisers!
Edit 2: I see that the function when $a=1$ and $b=100$ has a point $(x,y)=(1,1)$ where $f\rightarrow\infty$ and so perhaps the integral is not normalisable...?