我终生无法找到解决方案。这是我的代码,这是一个非常简单的颂歌,所以我不知道我要去哪里错了:
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))
答案 0 :(得分:2)
您并非从干净的工作空间开始,函数exp
可能是从sympy
导入的。
将其更正为np.exp
之后,我从x=0
得到了np.log(x)/x**3
处的第一次评估的明显的零除误差。