我正在尝试使用 Scipy(在http://www.physics.buffalo.edu/phy410-505/2011/topic4/app2/index.html的帮助下)解决盒中粒子问题。起初,我使用 16x16 矩阵来模拟哈密顿量,就像链接一样,我的结果与他们的一致。但是,当我使用更大的矩阵 (50x50) 时,由于矩阵尺寸更大,我在结果中发现了许多无关的特征值。
为什么 16x16 矩阵会产生完全正确的特征态,而更大的矩阵会产生无关的特征态?当使用更大的矩阵时(我认为由于省略了较少的基本元素会提高模拟的准确性),我如何判断哪些元素对应于实际的本征态,哪些是无关的?
我的代码如下:
from scipy import linalg, mat, matrix
def Sfun(m,n):
if (m+n)%2==0:
v1 = 2/(m+n+5)
v2 = 4/(m+n+3)
v3 = 2/(m+n+1)
return v1 - v2 + v3
else:
return 0
def Hfun(m,n):
if (m+n)%2==0:
return -8*(1-m-n-2*m*n)/((m+n+3)*(m+n+1)*(m+n-1))
else:
return 0
Slist = []
Hlist = []
for m in range(0,16):
tlist = []
for n in range(0,16):
tlist.append(Sfun(m,n))
Slist.append(tlist)
for m in range(0,16):
tlist = []
for n in range(0,16):
tlist.append(Hfun(m,n))
Hlist.append(tlist)
Smat = matrix(Slist)
Hmat = matrix(Hlist)
vals,vecs = linalg.eig(Hmat, Smat)
for i in range(0,16):
print('Vector: ', end="")
print(vecs[i], end="")
print(" Value: ", end="")
print(vals[i])