Python 使用scipy.integrate.odeint求解氢的径向波函数的困难

Python 使用scipy.integrate.odeint求解氢的径向波函数的困难,python,scipy,physics,odeint,Python,Scipy,Physics,Odeint,我试图用scipy.integrate.odeint来解氢原子的波函数,但它似乎没有给出正确的解形式。下面是应该实现SE方程的函数 def eq(y,r,l,E_nl): [u_nl, v_nl] = y #constants alpha = 1/137 #Fine structure constant mu = 5.11E-1 #MeV/c^2 V = -alpha/r #Potential dydr = [v_nl, (l*(l+1)/r**2 - 2 * mu * (E_

我试图用scipy.integrate.odeint来解氢原子的波函数,但它似乎没有给出正确的解形式。下面是应该实现SE方程的函数

def eq(y,r,l,E_nl):  
[u_nl, v_nl] = y

#constants
alpha = 1/137 #Fine structure constant 
mu = 5.11E-1 #MeV/c^2 
V = -alpha/r #Potential  


dydr = [v_nl, (l*(l+1)/r**2 - 2 * mu * (E_nl - V))*u_nl]
return dydr
这是应该实现解算器的代码

ode(eq,y0,r,args=(l,E_nl))
这些常数都是自然单位

y0 = [0, 1], l = 1, E_nl = 13.6e-6, r = np.linspace(1,7000,10000)

我已经研究了odeint的许多不同实现,但是我不明白为什么我的代码不能产生正确的解决方案

这将有助于我们有一个简单的复制和运行复制您的结果。在当前版本的代码中,您尚未定义传递给解算器的参数
l
E_nl
y0
r
。另外,您说“我正在尝试使用scipy.integrate.odeint”,但您编写的代码是
ode(eq,y0,r,args=(l,E_nl))
;大概应该是
odeint(…)
。对不起,我已经编辑了这个问题,将变量包括在内。在
d(v_nl)/dr
(dydr中的第二个元素)的等式中,您是否遗漏了一个涉及
v_nl
的术语?类似于
-(2/r)*v_nl
的东西。我不这么认为,我相当肯定这个等式写得很好。方程中只有一个导数,它是u_nl的二阶导数或v_nl的一阶导数。所示径向波函数的微分方程包括项(2/r)*d(r_El)/博士,这不是你正在解的同一个方程吗?这将有助于有一个简单的模型,我们可以简单地复制并运行来重现你的结果。在当前版本的代码中,您尚未定义传递给解算器的参数
l
E_nl
y0
r
。另外,您说“我正在尝试使用scipy.integrate.odeint”,但您编写的代码是
ode(eq,y0,r,args=(l,E_nl))
;大概应该是
odeint(…)
。对不起,我已经编辑了这个问题,将变量包括在内。在
d(v_nl)/dr
(dydr中的第二个元素)的等式中,您是否遗漏了一个涉及
v_nl
的术语?类似于
-(2/r)*v_nl
的东西。我不这么认为,我相当肯定这个等式写得很好。方程中只有一个导数,它是u_nl的二阶导数,或者仅仅是v_nl的一阶导数。所示的径向波函数微分方程包括(2/r)*d(r_El)/dr项。这不是你正在求解的方程吗?