Python 用numpy求波函数的概率密度
我试图用一个初始条件来求薛定谔方程的概率密度函数。我的初始条件是: 常数为:Python 用numpy求波函数的概率密度,python,jupyter-notebook,Python,Jupyter Notebook,我试图用一个初始条件来求薛定谔方程的概率密度函数。我的初始条件是: 常数为: L = 100 x0 = 15 v = 16 sigma2 = 5 tmax = 4 我的高斯分布和寻找归一化初始条件的代码,使得概率密度函数在区间0到L上等于1是: from scipy.integrate import quad dx = 1/32 x = np.linspace(0, L, N) func = lambda x: my_gaussian(x)*my_gaussi
L = 100
x0 = 15
v = 16
sigma2 = 5
tmax = 4
我的高斯分布和寻找归一化初始条件的代码,使得概率密度函数在区间0到L上等于1是:
from scipy.integrate import quad
dx = 1/32
x = np.linspace(0, L, N)
func = lambda x: my_gaussian(x)*my_gaussian(x).conjugate()
C,e = quad(func, 0, L)
psi = (C**-(1/2))*my_gaussian(x)
然而,在jupyter中,当我运行上述代码时,我得到了这个消息。它可以工作,但我不确定它是否在做它应该做的事情:
/opt/conda/lib/python3.7/site-packages/scipy/integrate/quadpack.py:463: ComplexWarning: Casting complex values to real discards the imaginary part
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
那么我上面的代码是否正确计算了归一化高斯初始条件?如果您有什么需要我补充或解释的,请告诉我。代码应该使我的wavefunction具有以下条件:它看起来正确。我认为
\u quadpack.\u qagse
看到my_gaussian(x)*my_gaussian(x)。共轭()
是一个复数,即使虚部为零。为了摆脱警告,获得一些平静,您可以尝试将my_gaussian(x)*my_gaussian(x).conjugate()
替换为abs(my_gaussian(x))**2
@piterberg谢谢:)当然可以。顺便说一句,您可以将numpy.inf
而不是L传递给quad
,它将计算出右上限本身(假设您希望无穷大作为上限,并使用L作为该上限的代理),它看起来是正确的。我认为\u quadpack.\u qagse
看到my_gaussian(x)*my_gaussian(x)。共轭()
是一个复数,即使虚部为零。为了摆脱警告,获得一些平静,您可以尝试将my_gaussian(x)*my_gaussian(x).conjugate()
替换为abs(my_gaussian(x))**2
@piterberg谢谢:)当然可以。顺便说一句,您可以将numpy.inf
而不是L传递给quad
,它将计算出右上限本身(假设您希望无穷大作为上限,并使用L作为该上限的代理)