Python 积分可能发散,或缓慢收敛

Python 积分可能发散,或缓慢收敛,python,numerical-integration,Python,Numerical Integration,嗨,我没有使用数值积分的经验,但我想知道是否有人能帮忙。 这里我定义了一些变量,并且有一个我想要集成的函数。然而,我得到了“积分可能是发散的,或者慢慢收敛的。”并且几乎得到了相同的结果,尽管我在coth分母中加了什么 有人知道我是否犯了一个错误,或者我只是不能做这个积分 谢谢 您的被积函数有一些困难。首先,虽然函数不是发散的,但对于积分方案来说,它可能看起来像发散的。只要画出来: 这是因为您的w0是1971327996035.2234,因此exp(-x**2)抑制只发生在非常右侧。使用变量替换

嗨,我没有使用数值积分的经验,但我想知道是否有人能帮忙。 这里我定义了一些变量,并且有一个我想要集成的函数。然而,我得到了“积分可能是发散的,或者慢慢收敛的。”并且几乎得到了相同的结果,尽管我在coth分母中加了什么

有人知道我是否犯了一个错误,或者我只是不能做这个积分


谢谢

您的被积函数有一些困难。首先,虽然函数不是发散的,但对于积分方案来说,它可能看起来像发散的。只要画出来:

这是因为您的
w0
1971327996035.2234
,因此
exp(-x**2)
抑制只发生在非常右侧。使用变量替换
y=x/w0
将其正确。其次,函数不是在
x=0
处定义的(因为用tanh除),而是可以用
2*kb*T
连续扩展

从scipy导入集成
将numpy作为np导入
将matplotlib.pyplot作为plt导入
DvDc=6.5
密度=5.65
Vs=4.6e3
a=3.3e-9
w0=np.sqrt(2)*Vs/a
T=50
kb=1.38064852e-5#单位为电动汽车`
j0=(DvDc)**2/((2*np.pi)**2*dens*Vs**5)
def func(x):
返回x*np.exp(-x/w0)**2))/np.tanh(x/(2*kb*T))
定义功能2(y):
返回np.where(
y>0,
y*w0*np.exp(-(y**2))/np.tanh(y*w0/(2*kb*T)),
2*kb*T
)
val,err=integrate.quad(func2,0,np.inf)
val*=w0#y=x/w0=>dx=dy*w0
打印(val)
func2
的绘图:


被积函数有一些困难。首先,虽然函数不是发散的,但对于积分方案来说,它可能看起来像发散的。只要画出来:

这是因为您的
w0
1971327996035.2234
,因此
exp(-x**2)
抑制只发生在非常右侧。使用变量替换
y=x/w0
将其正确。其次,函数不是在
x=0
处定义的(因为用tanh除),而是可以用
2*kb*T
连续扩展

从scipy导入集成
将numpy作为np导入
将matplotlib.pyplot作为plt导入
DvDc=6.5
密度=5.65
Vs=4.6e3
a=3.3e-9
w0=np.sqrt(2)*Vs/a
T=50
kb=1.38064852e-5#单位为电动汽车`
j0=(DvDc)**2/((2*np.pi)**2*dens*Vs**5)
def func(x):
返回x*np.exp(-x/w0)**2))/np.tanh(x/(2*kb*T))
定义功能2(y):
返回np.where(
y>0,
y*w0*np.exp(-(y**2))/np.tanh(y*w0/(2*kb*T)),
2*kb*T
)
val,err=integrate.quad(func2,0,np.inf)
val*=w0#y=x/w0=>dx=dy*w0
打印(val)
func2
的绘图:


什么是integrate.quad?Coth在0处未定义,这可能会导致数值积分问题hi,integrate.quad来自scipy软件包您知道正确答案是什么吗?我得到了4.598332106511304e-20f,你看cot的图(什么是integrate.quad?Coth在零处未定义,这可能会导致数值积分的问题Hi,integrate.quad来自scipy软件包你知道正确答案是什么吗?我得到了4.598332106511304e-20f,你看cot的图(
from scipy import integrate
import numpy as np
from mpmath import coth

DvDc = 6.5
dens = 5.65
Vs = 4.6e3
a = 3.3e-9
w0 = np.sqrt(2)*Vs/a
T = 50 
kb = 1.38064852e-5  # in eV`
j0 = (DvDc)**2 / ((2*np.pi)**2 *dens*Vs**5)

def func(x):
    return x*np.exp(-(x/w0)**2)*coth(x/(2*kb*T))
S = j0*integrate.quad(func, 0, np.inf)[0]
print(S)
1.943067033976125e+24