用于N×N矩阵行列式的Python代码

时间:2017-03-14 13:27:24

标签: python python-3.x matrix determinants

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

2 个答案:

答案 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分解等等。