Python决定因素计算(不使用外部库)

时间:2012-04-04 00:08:33

标签: python matrix linear-algebra

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

就我对线性代数的理解而言,我需要实现Sarrus规则才能完成前两个,但我不知道如何解决这个Python或更大尺寸的矩阵。任何提示,技巧或指南都将非常感激。

2 个答案:

答案 0 :(得分:6)

Sarrus规则只是解决3x3决定因素的助记符,并且不会超出那个规模。

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

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

答案 1 :(得分:0)

如果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)