2014-10-10 59 views
-1

我正在学习如何在Scipy中使用odeint来解决ODE。现在我试图解决薛定谔方程的半无限势阱:如何使用scipy odeint获得多种解决方案?

V(x) = -v (x<0) 
V(x) = 0 (x>0) 
v > 0 
-f''(x)/2 +V(x)f(x) = energy*f(x) 
-v < energy < 0 

所以确切的解决方案应该是

C1*sin(x)+C2*cos(x) (x<0) 
C3*exp(x)+C4*exp(-x) (x>0)  

我设置在x < 0区的起点(给出f(x0),f'(x0),x0<0 ),但我得到的解决方案总是在x> 0区域中的exp(x)。但exp(-x)在物理学中更有意义。如何使用odeint获得此解决方案?

+1

这不是确切的解决方案。另外,试着先理解初始值问题,边界值问题和特征值问题之间的差异,然后决定你试图解决哪一个问题。 – 2014-10-10 12:54:40

+0

我认为这是一些忽略一些系数的确切解决方案。如上所述,我想解决一个初始值问题,并将确切的解决方案与'odeint'的结果进行比较。 – Kala 2014-10-11 14:46:03

+0

'odeint'为您提供初始值问题的解决方案。初始值问题的解决方案是独一无二的,并由'odeint'给出,实际上对于大多数初始值它应该呈指数级增长。所以你不想在这里解决初始值问题。 – 2014-10-11 15:13:32

回答

1

如您所言,SciPy的odeint解决了ODE,但Schroedinger方程是一个PDE(偏微分方程)。您可以离散空间坐标并将其视为耦合ODE的系统,但通常的方法是通过求解相应的特征值问题来找到解的特征基。

+0

是的,它是PDE,但是这是一个一维系统,所以只有一个变量,这意味着我们可以像ODE那样对待它。 – Kala 2014-10-11 13:43:34