3

我正在制作一个小型矩阵运算库,作为对自己的编程挑战(以及为了学习使用 Python 编写代码),并且我遇到了计算 2x2、3x3 和 4x4 矩阵的行列式的任务。

就我对线性代数的理解而言,我需要实现 Sarrus 规则才能完成前 2 个,但我不知道如何以 Python 方式或更大尺寸的矩阵来解决这个问题。任何提示、提示或指南将不胜感激。

4

2 回答 2

6

Sarrus 规则只是解决 3x3 行列式的助记符,超出该大小不会有帮助。

您应该研究用于计算任意大方阵行列式的莱布尼茨公式。这个公式的好处是n*n矩阵的行列式是它可以根据它的一些(n-1)*(n-1)子矩阵的行列式的组合来确定,这很好地适用于递归函数解决方案。

如果您能理解 Leibniz 公式背后的算法,并且您之前使用过递归函数,那么将其转换为代码(Python 或其他)将很简单,然后您就可以找到 4x4 矩阵及其他矩阵的行列式!

于 2012-04-04T00:19:56.117 回答
1

如果 M 是浮点矩阵,这是一个丑陋的缩合方法(chio?),我认为它有效......
我使用的是 python 2.7.2

from itertools import product, islice

def det(M,prod=1):
    dim = len(M)
    if dim == 1:
        return prod * M.pop().pop()
    it = product(xrange(1,dim),repeat=2)
    prod *= M[0][0]
    return det([[M[x][y]-M[x][0]*(M[0][y]/M[0][0]) for x,y in islice(it,dim-1)] for i in xrange(dim-1)],prod)
于 2012-04-05T22:50:20.390 回答