我已经浏览过有关该问题的先前问题,但似乎无法解决。我正在尝试求解一个具有时间依赖性的方程(有些不相关),但我不断收到第 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=[[]]
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-th 个元素的第 k-th 个元素),而实际上它是一个缩放器/浮点列表。您可以在破坏代码的行之前添加一个 print psi
语句来验证这一点。我得到:
psi = [2105.1955756978987, 2443.3566356290821, 2821.4068271041683, 3241.3729378382568, 3704.9020343410039, 4213.1691313503734, 4766.7842561936268, 5365.70...
关于Python索引错误:invalid index to scalar variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112648/