0

我的代码仅适用于 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
4

2 回答 2

2

您应该使用 numpy 库,它们提供了一些很好的工具来计算矩阵的行列式:

 import numpy
 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
 det = numpy.linalg.det(matrix)
于 2017-03-14T13:36:18.550 回答
0

正如 Rory Daulton 所提到的,并且我很确定成千上万的人已经提到过,我们无法通过未成年人的方法计算一般行列式。该方法仅具有理论价值(例如,证明对角矩阵的行列式是其对角元素的乘积)。除非您被特别要求实施这样的解决方案(并且仅用于教育目的),否则您应该使用高斯消除、Choleski 分解等。

于 2017-03-14T19:54:13.530 回答