【python】求行列式的值

这篇具有很好参考价值的文章主要介绍了【python】求行列式的值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本思路

通过降阶的思想不断将行列式转为低阶行列式(递归),当阶数为2时直接计算即可

代码实现
import numpy as np
from fractions import Fraction
import sympy as sy


# index: 起始元素下标
def HLS(data: np.array, index: int):
    m, flag = len(data), 0                         # flag统计交换行的次数,对结果添加相应的符号
    data = data.astype('object')                   # 将元素转为object,方便运算的进行
    if m == 2:
        value = data[0][0] * data[1][1] - data[0][1] * data[1][0]
        return value
    else:
        # 寻找首个元素不为0的行并交换
        if data[index][index] == 0:
            count = index
            while data[count][index] == 0:
                count += 1
            # 交换两行
            data[[index, count], :] = data[[count, index], :]
            flag += 1
        for i in range(index, m - 1):
            if data[i + 1][index] != 0:
                # 使用分数表示,防止因浮点数导致结果误差
                ratio = Fraction(data[i + 1][index], data[index][index])
                for j in range(index, m):
                    # 使用sympy包的Rational()函数实现分数的友好显示
                    data[i + 1][j] = sy.Rational(Fraction(data[i + 1][j], 1) - Fraction(data[index][j], 1) * ratio)
        intial_ele = data[index][index]                 # 记录起始元素,结果用
        data = np.delete(data, index, axis=0)           # 除去首元素所在行列
        data = np.delete(data, index, axis=1)
        return pow(-1, flag) * intial_ele * HLS(data, index)

if __name__ == '__main__':
    data = np.array([
        [1,0,0,2,0],
        [3,1,4,5,0],
        [6,0,1,7,0],
        [0,0,0,1,0],
        [8,9,10,11,1],
    ])
    value = HLS(data, 0)
    print("行列式的值为: ", value)
结果验证

python numpy计算带参数的行列式,个人学习,python,线性代数文章来源地址https://www.toymoban.com/news/detail-740510.html

到了这里,关于【python】求行列式的值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 李永乐(一)行列式计算——笔记

    说明:第 i 行元素 乘 第 j 列的代数余子式 之和 = 0 引申:行有什么性质,列就有什么性质 引申:两行相同,行列式值为0 注:不要理解错了,二 三行照抄,拆第一行(本着 好算 的原则拆) 这条性质用的最多 加出公因数,提出公因数 加出0 1. 这里“-1”的次数是:n*(n-1)/2

    2024年02月08日
    浏览(26)
  • 1.2 行列式的性质和计算

      当学习行列式性质和计算时,以下是一些具体的学习目标: 理解行列式的定义和计算方法,能够准确计算给定的行列式。(最基本的) 熟练掌握行列式的基本性质,包括交换行列式的两行或两列、用一个数乘行列式的某一行或某一列、将两行或两列相加到另一行或另一列

    2024年01月16日
    浏览(26)
  • 宋浩线性代数笔记(一)行列式的计算

            线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数

    2024年02月17日
    浏览(38)
  • python如何算矩阵的行列式

    在 Python 中,可以使用 NumPy 库中的 linalg.det() 函数来计算矩阵的行列式。例如,假设你要计算以下矩阵的行列式: $$A=begin{bmatrix}1 2 34 5 67 8 9end{bmatrix}$$ 你可以使用 NumPy 库来计算它的行列式,方法如下: 运行上面的代码后,将输出矩阵 A 的行列式的值,即: 注意,如果矩阵

    2024年02月12日
    浏览(41)
  • 利用python求行列式、矩阵的秩和逆

    相关线性代数知识,自行百度!!!

    2024年02月13日
    浏览(36)
  • C#,数值计算,矩阵的行列式(Determinant)、伴随矩阵(Adjoint)与逆矩阵(Inverse)的算法与源代码

    本文发布矩阵(Matrix)的一些初级算法。 矩阵行列式是指矩阵的全部元素构成的行列式,设A=(a)是数域P上的一个n阶矩阵,则所有A=(a)中的元素组成的行列式称为矩阵A的行列式,记为|A|或det(A)。若A,B是数域P上的两个n阶矩阵,k是P中的任一个数,则|AB|=|A||B|,|kA|=kⁿ|A|,|A*|=

    2024年02月20日
    浏览(30)
  • 0105行列式按行(列)展开-行列式-线性代数

    在n阶行列式中,把 ( i , j ) 元 a i j (i,j)元a_{ij} ( i , j ) 元 a ij ​ 所在的第 i 行和第 j i行和第j i 行和第 j 列划去后,留下来的 n − 1 n-1 n − 1 阶行列式叫做 ( i , j ) 元 a i j (i,j)元a_{ij} ( i , j ) 元 a ij ​ 的余子式,记作 M i j M_{ij} M ij ​ ;记 A i j = ( − 1 ) i + j M i j , A i j 叫做 (

    2024年03月21日
    浏览(40)
  • 线性代数笔记1-二阶行列式和三阶行列式

    本笔记记录自B站《线性代数》高清教学视频 “惊叹号”系列 宋浩老师第一课 有2行2列,4个元素 ∣ a 11 a 12 a 21 a 22 ∣ begin{vmatrix} a_{11} a_{12}\\\\ a_{21} a_{22} end{vmatrix} ∣ ∣ ​ a 11 ​ a 21 ​ ​ a 12 ​ a 22 ​ ​ ∣ ∣ ​ a i j a_{ij} a ij ​ : i是行标,j是列标 ∣ a 11 a 12 a 21 a 22 ∣

    2023年04月09日
    浏览(32)
  • 【线性代数】P4 行列式相乘+范德蒙德行列式+克莱姆法则 cramer

    行列式相乘的原则,就是将第一个行列式中依次将每行的每个元素分别与第二个行列式每列的每个元素进行相加再相乘。 其实这样理解:已知两个行列式,如上,相乘有新行列式,新行列式左上角第一个值为: a 11 *b 11 +a 12 *b 21 +a 13 *b 31 实例2: 当然,三阶行列式无法与四阶

    2024年02月02日
    浏览(37)
  • 线性代数——行列式

    一、行列式的性质 性质1 行列互换,其值不变,即 |A|=|A^{T}| 性质2 若行列式中某行(列)元素全为 0, 则行列式为 0 性质3 若行列式中某行(列)元素有公因子 k(kneq0) ,则 k 可提到行列式外面( 倍乘性质 ) $$ begin{vmatrix}a_{11}a_{12}cdotsa_{1n}\\\\vdotsvdotsvdots\\\\ka_{i1}ka_{i2}cdotska_{in}\\\\

    2024年04月26日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包