基于python的线性代数关于行列式

基于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())
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是空空.v

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值