如何用python求矩阵的行列式
python新手,线性代数新手。然而,我正在寻找关于如何在python中从矩阵创建行列式而不使用Numpy的正确方法的指导。请参阅下面的代码片段。非常感谢您的帮助如何用python求矩阵的行列式,python,matrix,linear-algebra,Python,Matrix,Linear Algebra,python新手,线性代数新手。然而,我正在寻找关于如何在python中从矩阵创建行列式而不使用Numpy的正确方法的指导。请参阅下面的代码片段。非常感谢您的帮助 import math from math import sqrt import numbers import operators def determinant(self) if not self.is_square(): raise(ValueError, "Cannot calcu
import math
from math import sqrt
import numbers
import operators
def determinant(self)
if not self.is_square():
raise(ValueError, "Cannot calculate determinant of non-square matrix.")
if self.h > 2:
raise(NotImplementedError, "Calculating determinant not implemented for matrices larger than 2x2.")
|x| = A
det(A) = [[A, B][C, D]]
assert self.rows == A.cols
assert self.row > 1
term_list = []
sum
是一个内置函数,不能用作变量名。代码没有正确缩进。这应该起作用:
def行列式(矩阵,mul):
宽度=透镜(矩阵)
如果宽度==1:
返回mul*矩阵[0][0]
其他:
符号=-1
答案=0
对于范围内的i(宽度):
m=[]
对于范围(1,宽度)内的j:
buff=[]
对于范围内的k(宽度):
如果k!=一:
buff.append(矩阵[j][k])
m、 附加(buff)
符号*=-1
答案=答案+mul*行列式(m,符号*矩阵[0][i])
回覆
测试矩阵=[[3,2,-3],[7,-1,0],[2,-4,5]]
打印(行列式(测试矩阵,1))
这样你可以得到非方矩阵的行列式。也许这是没有意义的,但我发现在jupyter笔记本中的这个实现很有用,因为它避免了对异常使用try
,有时对于非方矩阵获得零输出是很有趣的
import sympy as sp
import numpy as np
A=np.array([[1,1],[1,2],[-2,-4]])
sp.Matrix(A)
def行列式(A):
如果len(sp.Matrix(A).rref()[1])错误
这种代码毫无意义。你应该先阅读一些教程…从scipy.linalg import det,det([[1,2],[3,4]])
你想看看高斯消去法,因为这是计算中常用的求平方矩阵行列式的方法。这里是另一个链接,可能是一个很好的阅读@percusse他特别要求使用,但没有使用Numpy代码>谢谢你和其他人的评论。mul做什么?
B = np.hstack((A,np.array([[0],[0],[0]])))
sp.Matrix(B)
def determinant(A):
if len(sp.Matrix(A).rref()[1]) < max(np.shape(A)):
return 0
else:
return np.linalg.det(A)
determinant(A)
0
determinant(B)
0
np.linalg.det(A) -----> ERROR