Python索引器错误:标量变量的索引无效
关于这个问题,我已经看过以前的问题了,但我似乎无法解决它。我试图求解一个与时间相关的方程(有些不相关),但第31行不断出现“标量变量的索引无效”错误。这就是我在嵌套循环中定义b的时候。我感谢你的帮助。我的Python已经生锈了,因为我最近主要使用FortranPython索引器错误:标量变量的索引无效,python,physics,Python,Physics,关于这个问题,我已经看过以前的问题了,但我似乎无法解决它。我试图求解一个与时间相关的方程(有些不相关),但第31行不断出现“标量变量的索引无效”错误。这就是我在嵌套循环中定义b的时候。我感谢你的帮助。我的Python已经生锈了,因为我最近主要使用Fortran def main(): #Constants hbar= 1.0534*10**(-34) m=9.11*10**(-31) dx=0.1*10**(-9) dt=1*10**(-15) M=[[]
def main():
#Constants
hbar= 1.0534*10**(-34)
m=9.11*10**(-31)
dx=0.1*10**(-9)
dt=1*10**(-15)
M=[[]]
b=[[]]
psi=[[]]
#Wave function definition
x=np.linspace(0,10,100)
psi[:]=sp.exp(-(x-3)**2/4)/((2*np.pi)**(0.25)*(1*10**(-9))**0.5)
n=len(x)
r=(hbar*dt/(2*m*(dx**2)))*1j
#Matrix eigenvalues for diagonals and off-diagonals
for i in range(1,n-2):
for h in range(1,n-2):
if i==h:
M=2*(1+r)
elif i==h+1 or i==h-1:
M=-1*r
for k in range(1,1000):
for q in range(1,n-2):
b=2*psi[q+1][k]+r*(psi[q][k]-2*psi[q+1][k]+psi[q+2][k])
matmul=np.transpose(np.inv(M)*np.transpose(b))
psi=np.transpose([0,matmul,0])
psi=np.transpose(psi)
main()
我不确定您的所有代码都希望实现什么,但您在这里遇到了一个错误,因为您将
psi
视为一个列表(通过调用psi的第q个元素中的第k个元素psi[q][k]),而实际上它是一个缩放器/浮点列表。您可以在中断代码的行之前添加print psi
语句来验证这一点。我得到:
psi = [2105.1955756978987, 2443.3566356290821, 2821.4068271041683, 3241.3729378382568, 3704.9020343410039, 4213.1691313503734, 4766.7842561936268, 5365.70...
好吧我现在已经修复了这个问题,并且去掉了其他列表列表,因为它们是二维矩阵。