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作为该上限的代理)