Python索引错误:invalid index to scalar variable

标签 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=[[]]
    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/

相关文章:

python - 相当于 python 在 golang 中的 utils.execute()

python - 如何在Python中正确实现基于进程的锁?

python - Matplotlib 中 Facecolors 使用的标准化颜色图

rendering - Box2D:如何手动渲染 body

python-2.7 - 计算物理学,FFT分析

math - 帮助辛积分器

Python:KeyError:0 - 从通过循环访问的数据帧的子集创建列表的函数

python - 优化功能参数

c# - 如何解决与不可移动物体的二维碰撞?

python aboutdialog 程序名称/版本和 Logo 之间的空间