我正在制作一个小矩阵运算库作为对我自己的编程挑战(并且为了学习用Python编写代码),我开始计算2x2,3x3和4x4矩阵的行列式的任务
就我对线性代数的理解而言,我需要实现Sarrus规则才能完成前两个,但我不知道如何解决这个Python或更大尺寸的矩阵。任何提示,技巧或指南都将非常感激。
答案 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)