0
def rm_l_c(n,c,a,AC): #function to remove line and column
for i in range(0,n-1): #row loop
for j in range(0,n-1): #colum
k = j+1
if (j<c):k=j; #the first element in index 0,0
AC[i][j]=a[i+1][k] #The error is here
a=[[1,2,3],[4,5,6],[7,8,9]]
detA=0
AC=[]
def det(a,n):
if(n==2):
detA=a[0][0]*a[1][1]-a[0][1]*a[1][0]
else:
for c in range(0,n):
rm_l_c(n,c,a,AC)
n = n-1
detA=detA+((-1)**c)*a[0][c]*det(AC,n)
return detA
det(a,3)
這個代碼是使用拉普拉斯展開行列式的實施值插入到多維列表
https://en.wikipedia.org/wiki/Laplace_expansion
問題是在AC[i][j]=a[i+1][k]
我不知道如何做到這一點插入
也當我試圖運行它給了這個錯誤
Traceback (most recent call last):
File "C:\Users\zerocool\Desktop\det.py", line 22, in <module>
det(a,3)
File "C:\Users\zerocool\Desktop\det.py", line 17, in det
rm_l_c(n,c,a,AC)
File "C:\Users\zerocool\Desktop\det.py", line 6, in rm_l_c
AC[i][j]=a[i+1][k]
IndexError: list index out of range
>>>
'AC'是一個空列表。這是問題。一個快速解決方法是使AC每次都在變化,例如如果A是4x4,那麼AC = [[0,0,0],[0,0,0],[0,0,0]]' –
AC將首次使用3x3,然後再次使用2x2,然後停止 – robert
那麼,那就這樣做。 –