Numerisches Integrationsproblem: IntegrationWarning Das Integral ist wahrscheinlich divergent oder langsam konvergent
Ich versuche, die numerische Integration einer Funktion scipy's integrate.quadwie folgt zu erhalten.
$$ \begin{equation} G (\alpha) = \frac{4\alpha}{\pi}\int_0^{\infty} x e^{-\alpha x^2} {(\pi/2}+\mathrm{tan}^{-1}[Y_0(x)/J_0 (x)]) \mathrm{d}x \end{equation} $$
import numpy as np
from scipy import integrate
from scipy.special import k0,j0,y0,k1
def G(alpha=743711.5,T=5.5e-5,sw=10.65):
pi = 3.14
fun = lambda x: x*np.exp(-1*alpha*x**2)*(pi/2+np.arctan(y0(x)/j0(x)))
val,err = integrate.quad(fun,0, np.inf)
return val,err
val,err = G()
print (val,err)
Ich erhalte jedoch "Das Integral ist wahrscheinlich divergent oder langsam konvergent." Ich habe versucht, ein sehr großes Limit festzulegen, wie z limit = 10000000. Die gleiche Warnung ist jedoch. Weiß jemand, wie man das Problem löst?
https://doi.org/10.1029/TR033i004p00559
Antworten
Das Problem ist wahrscheinlich, dass der Wert von $\alpha$ ist groß im Vergleich zu den Werten von $x^2$dass der numerische Integrator wahrscheinlich wählt. Für jeden Wert$x \gg 1/\sqrt{\alpha}$Der Integrand liegt nahe bei Null (für ausreichend große Werte ist er im Gleitkomma genau Null). Der Integrand ist ebenfalls Null bei$x = 0$. Es macht also keinen Sinn, das Limit auf einen großen Wert zu setzen. Versuchen Sie im Gegenteil, es auf so etwas wie zu setzen$10/\sqrt{\alpha}, 20/\sqrt{\alpha}, ...$ und auf Konvergenz der Ergebnisse prüfen.
Vielleicht ist es am besten, eine neue Variable zu definieren $u = x/\sqrt{\alpha}$ und integrieren in Bezug auf $u$. Dann sollte der numerische Integrator wahrscheinlich funktionieren.