所以这在某种程度上和我画能级的问题有关,link to the problem。
不管怎样,我是用离散化的方法,得到各种位势的能级和波函数,我可能是编程工具,因为我不知道如何得到能量本征值的数值结果。我有一种强烈的感觉,那就是必须能够从给定的代码中提取该信息(该代码具有来自linalg模块的eig_banded例程)。但我只是一个工具,不知道怎么做:\
所以我只需要我画出的能量的数值。
我尝试过(这是链接中代码的一部分):
def calc(Nmesh,POWER,L ,numwav=0):
#
dx=L/Nmesh
x = np.arange(-L,L+0.0001,dx)
Npts=len(x)
V = x**POWER
#
ai = np.empty((2,Npts)) # ai[:,i] = a[:,i-1]
ai[0,:] = 1/dx**2 + V #
ai[1,:] = -1.0/dx**2/2 #
ai[1,Npts-2] = -99.0 #
a = ai[:,1:-1]
f = report_time(linalg.eig_banded)
eig, vec = f(a, lower=True,overwrite_a_band=True,
select='i',select_range=(0,numwav)
) #
wave = np.empty(Npts)
wave[1:-1] = vec[:,numwav]
wave[0] = 0 #
wave[Npts-1] = 0 #
wave = 150*wave + eig[numwav]
return x, V, wave, eig[numwav]
def main():
try: numwav = int(sys.argv[1])
except (IndexError, ValueError):
numwav = 2
POWER=4
L=4.0
Nmesh = 512
print 'Nmesh=%d' % Nmesh
x, V, wave, y = calc(Nmesh, POWER, L,numwav)
print 'Energy eigenvalue is: %d' % y但是在这个例子中,它给出的特征值是4,在曲线图上它更接近4.76…
我做错了什么?
发布于 2011-04-16 22:19:25
这是你的问题:
>>> '%d' % 1.2
'1'您想要的格式字符串是%f以显示小数
>>> '%f' % 1.2
'1.200000'诊断的关键在于它是一个整数,而不是您所看到的浮点数。
有关详细信息,请访问http://docs.python.org/library/stdtypes.html。例如,您可以使用以下格式进行舍入:
>>> '%.2f' % 1.234
'1.23'
>>> '%.2f' % 1.236
'1.24'发布于 2011-04-16 20:26:52
这是你的问题吗?
>>> 1/2
0如果是这样,这就是你的解决方案:
>>> from __future__ import division
>>> 1/2
0.5https://stackoverflow.com/questions/5686416
复制相似问题