我的代码仅适用于3x3矩阵 如何对N x N矩阵进行一些修改?`
alist = []
def det(m):
if len(m) > 2:
for i in range(len(m)):
new_m = deepcopy(m)
minor(new_m,i)
multiplier = m[i][0] * math.pow(-1,i)
recursive = det(new_m)
alist.append(multiplier * recursive)
else:
return (m[0][0]*m[1][1] - m[0][1]*m[1][0])
def minor(matrix,row):
length = len(matrix)
for i in range(length):
matrix[i].pop(0)
matrix.pop(row)
return matrix
答案 0 :(得分:1)
你应该使用numpy库,它们提供了一些很好的工具来计算矩阵的行列式:
import numpy
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
det = numpy.linalg.det(matrix)
答案 1 :(得分:0)
正如Rory Daulton所提到的那样,并且我很确定已经有成千上万的人提到过,我们无法通过未成年人的方法来计算一般的决定因素。该方法仅具有理论值(例如,证明对角矩阵的行列式是其对角元素的乘积)。除非你被特别要求实施这样的解决方案(并且仅用于教育目的),否则你应该选择高斯消除,Choleski分解等等。