2014-09-30 64 views
1

我已經看過關於這個問題的前幾個問題,但我似乎無法解決它。我試圖解決一個具有時間依賴性的方程式(有點不相干),但我一直在爲第31行收到「無效索引標量變量」錯誤。那是當我在嵌套循環中定義b時。我感謝您的幫助。我的Python是生鏽的,因爲我已經被主要與Fortran的工作最近Python IndexError:無效索引到標量變量

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() 

回答

1

我不知道到底是什麼所有代碼​​都希望實現的,但你在這裏打一個錯誤,因爲你是治療psi就好像它是一個列表清單(通過調用psi [q] [k],psi中的元素的第10第k個元素),實際上它是一個縮放器/浮點列表。您可以在破壞您的代碼的行之前添加print psi語句來驗證這一點。我得到:

psi = [2105.1955756978987, 2443.3566356290821, 2821.4068271041683, 3241.3729378382568, 3704.9020343410039, 4213.1691313503734, 4766.7842561936268, 5365.70... 
+0

好的。我已經解決了這個問題,並刪除了其他列表,因爲它們是二維矩陣。 – user3655118 2014-09-30 04:26:43