我正在尝试编写一个程序来查找 Python 3.3 中 NxN 矩阵的行列式,但它返回“列表索引超出范围”错误。det 函数中有一个调试打印语句,表明在给出的 2 x 2 矩阵示例的情况下,它适用于第一个未成年人,但随后 A 减少到 [[3]] 并且我看不到我的代码的哪一部分正在改变它?我希望 det 函数保持 A 不变,因为它沿第一行工作。
def minor(matrix,i):
"""Returns the Minor M_0i of matrix"""
minor = matrix
del minor[0] #Delete first row
for b in list(range(len(matrix))): #Delete column i
del minor[b][i]
return minor
def det(A):
"""Recursive function to find determinant"""
if len(A) == 1: #Base case on which recursion ends
return A[0][0]
else:
determinant = 0
for x in list(range(len(A))): #Iterates along first row finding cofactors
print("A:", A)
determinant += A[0][x] * (-1)**(2+x) * det(minor(A,x)) #Adds successive elements times their cofactors
print("determinant:", determinant)
return determinant
data = [[4, 3], [6, 3]]
print(det(data))