基于python的线性代数关于行列式
啥叫行列式?
行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | 。无论是在线性代数、多项式理论,还是在微积分学中(比如说换元积分法中),行列式作为基本的数学工具,都有着重要的应用。
行列式可以看做是有向面积或体积的概念在一般的欧几里得空间中的推广。或者说,在 n 维欧几里得空间中,行列式描述的是一个线性变换对“体积”所造成的影响。
记得导包
import numpy as np
import random
import sympy
from sympy import *
生成随机行列式
def setDetMat(long=4, minVal=-10, maxVal=100, minNum=0, maxNum=10, inver=False, *args, **kwargs) -> Matrix:
"""
随机产生一个用minNum-maxNum数字构成的long行wid列的行列式随机产生一个用minNum - maxNum数字构成的long行wid列的行列式
:param long: 行列式的行数和列数
:param minVal: 行列式最小的值
:param maxVal: 行列式最大的值
:param minNum: 行列式内部最小的数
:param maxNum: 行列式内部最大的数
:param Inver: 行列式是否可逆,当为False时,行列式可以可逆也可以不可逆,当为True时行列式可逆
:param args:
:param kwargs:
:return: 返回long*long的行列式
例:
>>> test = setDetMat() #生成一个行列式
>>> print(test)
>>> print(setDetMat(5)) #生成一个5行5列的行列式
"""
ranMat = Matrix(np.random.randint(minNum, maxNum, (long, long)))
ans = ranMat.det() # 先计算计算行列式的值,把行列式的值控制在minVal-maxVal之间
if not inver:
while ans < minVal or ans > maxVal:
ranMat = Matrix(np.random.randint(minNum, maxNum, (long, long)))
ans = ranMat.det() # 计算行列式的值
else:
while ans < minVal or ans > maxVal or ans == 0: # 若行列式为零则行列式不可逆,重新产生行列式
ranMat = Matrix(np.random.randint(minNum, maxNum, (long, long)))
ans = ranMat.det() # 计算行列式的值
return Matrix(ranMat)
计算行列式的值
def getDetMat(DeterEvaluation, *args, **kwargs) -> int:
"""
计算行列式的值
:param DeterEvaluation: 要计算的行列式
:param args:
:param kwargs:
:return: 返回行列式的值
>>> test=setDetMat()
>>> test1=Matrix([[-3, -1, 0, 0], [-4, -4, 0, 0], [0, 0, 4, 7], [0, 0, 4, 8]])
>>> print(getDetMat(test)) #计算行列式的值
>>> print(getDetMat(test1))
"""
return int(DeterEvaluation.det())