Python 用solve_-bvp求解Schrö;丁格方程

Python 用solve_-bvp求解Schrö;丁格方程,python,scilab,Python,Scilab,嗨,我想用solve_bvp来解无限方阱的薛定谔方程,但我不知道如何用solve_bvp来做两件事。一个是设置范围,我试图给它的x轴从-b到b,但它是为0到b求解的,我以前曾尝试用solve_ivp求解,但我遇到了同样的问题。另一个问题是如何设置边界条件,我需要考虑一阶导数和二阶导数,但是我有点迷茫,因为我不能很好地理解文档。我是按照一个例子发现的,但它没有给我正确的结果,所以我试图重写它。我也在另一个网站上讨论这个问题,但这个问题比我试图解决的问题更一般 这就是我正在努力工作的代码 from

嗨,我想用solve_bvp来解无限方阱的薛定谔方程,但我不知道如何用solve_bvp来做两件事。一个是设置范围,我试图给它的x轴从-b到b,但它是为0到b求解的,我以前曾尝试用solve_ivp求解,但我遇到了同样的问题。另一个问题是如何设置边界条件,我需要考虑一阶导数和二阶导数,但是我有点迷茫,因为我不能很好地理解文档。我是按照一个例子发现的,但它没有给我正确的结果,所以我试图重写它。我也在另一个网站上讨论这个问题,但这个问题比我试图解决的问题更一般

这就是我正在努力工作的代码

from scipy.integrate import solve_bvp
from pylab import *
import numpy as np

## dimentions         _
## |       :       |   | Vmax
## |    ___:___    |   |        _
## |___|       |___|  _| Vmin   _|- Vb
##-B  -A   0   A   B*Alpha
## \______/|\______/
##     Po       Pf

Vmax = 55
Vmin = 0
Vb = 50
A = 1
B = 4
alpha = 1
Po = -A-B
Pf = A+B*alpha
psi_b = array([0,1])   # Wave function boundry [first dir, secound dir]

N = 1000 #steps
psi = np.zeros([N,2])
x = linspace(Po, Pf, N)    # x-axis


def V(z):
    '''
    #Potential function in the finite square well.
    '''
    val=[]
    for i in z:
        if -A <=i <= A:
            val.append( Vb)
        elif i<=Po:
            val.append( Vmax)
        elif i>=Pf:
            val.append(Vmax)
        else:
            val.append(Vmin)
    return val

def boundary_conditions(psi_Po, psi_pf):
    return (psi_b)

def SE(z, p, E):
    state0 = p[1]
    state1 = 1.0*(V(z) - E)*p[0]
    return np.array([state0, state1])

def Wave_function(energy,psi):
    y_ = np.zeros((2, x.size))
    psi = solve_bvp(SE(x, psi, y_), boundary_conditions, x, y_)
    print(len(psi.y))
    return psi.y

def pltPotentail():
    plot(x,V(x))    

def main():
    en = linspace(0, Vb, 10)   # vector of energies where we look for the stable states
    figure(1)
    pltPotentail()
    Wave_function(0,psi)
    show()
if __name__ == "__main__":
    main()
来自scipy.integrate导入解决方案
从派拉布进口*
将numpy作为np导入
##尺寸_
##|:| | Vmax
## |    ___:___    |   |        _
##| | | | | | | | | | Vmin |-Vb
##-B-A 0 A B*α
## \______/|\______/
##波夫
Vmax=55
Vmin=0
Vb=50
A=1
B=4
α=1
Po=-A-B
Pf=A+B*α
psi_b=数组([0,1])#波函数边界[第一方向,第二方向]
N=1000步
psi=np.零([N,2])
x=linspace(Po,Pf,N)#x轴
def V(z):
'''
#有限方阱中的势函数。
'''
val=[]
对于z中的i:

如果-A我已经用
scipy.integrate.solve_bvp
解出了有限方阱势,我已经用
scipy.integrate.solve_bvp

解出了有限方阱势,请添加更多的解释和这里使用的代码,这样即使外部链接在近期被破坏,答案仍然有用未来。这只是为了让我们都可以学习。请添加更多的解释和这里使用的代码,这样即使外部链接在不久的将来被破坏,答案仍然有用。只有这样我们才能学习。