Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用python求矩阵的行列式_Python_Matrix_Linear Algebra - Fatal编程技术网

如何用python求矩阵的行列式

如何用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

python新手,线性代数新手。然而,我正在寻找关于如何在python中从矩阵创建行列式而不使用Numpy的正确方法的指导。请参阅下面的代码片段。非常感谢您的帮助

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