odeint:根据规则“安全”,无法将数组数据从dtype('O')转换为dtype('float64')

时间:2020-10-11 17:25:03

标签: python types differential-equations odeint

我终生无法找到解决方案。这是我的代码,这是一个非常简单的颂歌,所以我不知道我要去哪里错了:

H0 = float(3*10**(17)) # seconds 
me = 0.000511 # GeV/c^2
e0 = 55.26349406*1e+15 # e^2⋅GeV^−1⋅m^−1
a = 1/137 
nb = 0.016

def efrac(Xe, x, H0, me, e0, a, nb):
    A = (9.78*a**2)/(H0*me**2)
    dXedx = A*(np.log(x)/(x**3)) * ((1-Xe)*((me*e0)/(2*np.pi))**(3/2)*exp(-x)-(x**(3/2)*Xe**2*nb))
    return dXedx
    
x = np.linspace(0, 1.0, 1000)
Xe0 = 1.0 
sol = odeint(efrac, Xe0, x, args=(H0, me, e0, a, nb))

1 个答案:

答案 0 :(得分:2)

您并非从干净的工作空间开始,函数exp可能是从sympy导入的。

将其更正为np.exp之后,我从x=0得到了np.log(x)/x**3处的第一次评估的明显的零除误差。