所以我需要在python中定义它的潜力。我有无限大的方势阱,它在中间有势垒。
对于障碍,我有这样的想法:
V_x = zeros([Npts],float)
for i in range(0,Npts,1):
if x[i] > 0 and x[i]<width:
V_x[i]=v0Npts是x的长度,x定义为从xmin到xmax递增的值的数组(x=arange(Xmin,Xmax+0.001,dx))。
如何将无限的潜力包含在其中?
它有一定的长度(假设从-100到100),并且它的行为必须像不可穿透的墙一样(在-100和100处的函数必须为零)。
我可以将势垒与此势能单独组合(例如,势垒为V_b,无限势能为V_p,然后V_x可以为V_x=V_b+V_p)。
你觉得这行得通吗?我在定义无限潜能时遇到了问题……
发布于 2011-02-23 13:17:27
我建议只使用一个比有限势大几个数量级(3-4)的数字来表示无限势。它不会在你的状态的能量中产生太大的不同,让它变得更大。事实上,您很快就会受到求解哈密顿量时使用的浮点数的精度的限制。你真的只需要将ends设置为“无限”,这样就可以使用下面的代码:V_x[0] = V_x[-1] = abs(v0)*10**4。当然,如果您愿意,可以将其设置得更大,但我认为这不会有太大的不同。如果你没有将端点设置为无穷大,那么为什么你要在知道波函数将为零的大部分区域中求解波函数的值呢?
此外,请注意,在您使用的单位中,您的无限潜力不能与h-bar^2/2/m/delta_x^2相比。这一切都使得“无限”势比哈密顿中的有限势和动能项都大几个数量级。
发布于 2011-02-25 01:12:47
Numpy有一个Inf浮点变量,因此根据您如何使用潜力,您可以显式定义它:
import numpy as np
Npts = 100
v0 = 10.0
V_x = v0*np.ones((Npts,),dtype=float)
x = np.linspace(-20,20,Npts)
width = 15.0
# now replace those values for the potential in the impenetrable
# region with np.Inf
ii = ((x>width) | (x<0)).nonzero()
V_x[ii] = np.Inf这为您提供了一个x介于-20和20之间的系统,其中对于0 15或x<0,V_x = Inf
注意:作为一般建议,还有一些比使用for循环更有效的方法来设置numpy数组,如上面的代码所示。
https://stackoverflow.com/questions/5084295
复制相似问题