3.5 拉普拉斯定理

news/2024/11/20 11:29:23/

文章目录

  • 基本概念
  • 拉普拉斯定理
  • Python实现
  • 结语

基本概念

  在学习拉普拉斯定理之前,先介绍几个重要概念,第一个概念是k阶子式。k-阶子式是指挑选矩阵的k行,k列,按原来的顺序组成的子矩阵的行列式 ,记号比较复杂,我举个例子,第1,3,51,3,51,3,5行和第1,2,41,2,41,2,4列组成的3-阶子式就记为:
A(1,3,51,2,4)=∣a11a12a14a31a32a34a51a52a54∣A\begin{pmatrix}1,3,5\\1,2,4\end{pmatrix}= \begin{vmatrix}a_{11} & a_{12} & a_{14}\\ a_{31} & a_{32} & a_{34}\\ a_{51} & a_{52} & a_{54} \end{vmatrix} A(1,3,51,2,4)=a11a31a51a12a32a52a14a34a54
  k-阶余子式,就是取反操作,删除对应行和对应列,剩余的矩阵元素,按照位置不变形成的子矩阵的行列式,比如对于5-阶矩阵来说,1,3,51,3,51,3,5行和第1,2,41,2,41,2,4列的余子式就是A(2,43,5)A\begin{pmatrix}2,4\\3,5\end{pmatrix}A(2,43,5).
  剩下一个概念就是代数余子式,是余子式根据行索引和列索引加起来的奇偶性来判断,奇数为负的余子式,偶数为正的余子式。

拉普拉斯定理

  拉普拉斯定理提供了一种计算nnn阶行列式的办法。就是按k行或k列展开。它的算法第一步就是先求n的全部k种组合,然后求这k行和所有k种列组合的子式与代数余子式的乘积,把这些乘积加起来就是行列式。
  公式描述比较麻烦,我以五阶矩阵按第一和第二行展开为例子,讲讲怎么计算。
  首先求所有五阶矩阵取两列的所有的列组合,得出以下10种:
(1,2),(1,3),(1,4),(1,5)(2,3),(2,4),(2,5)(3,4),(3,5)(4,5)(1,2),(1,3),(1,4),(1,5)\\ (2,3),(2,4),(2,5)\\ (3,4),(3,5)\\ (4,5)\\ (1,2),(1,3),(1,4),(1,5)(2,3),(2,4),(2,5)(3,4),(3,5)(4,5)
  那么展开就是:
∣A∣=A(1,21,2)×A(3,4,53,4,5)+A(1,21,3)×(−1)A(3,4,52,4,5)+A(1,21,4)×A(3,4,52,3,5)+A(1,21,5)×(−1)A(3,4,52,3,4)+A(1,22,3)×A(3,4,51,4,5)+A(1,22,4)×(−1)A(3,4,51,3,5)+A(1,22,5)×A(3,4,51,3,4)+A(1,23,4)×A(3,4,51,2,5)+A(1,23,5)×(−1)A(3,4,51,2,4)+A(1,24,5)×A(3,4,51,2,3)|A|=A\begin{pmatrix}1,2\\1,2\\\end{pmatrix} \times A\begin{pmatrix}3,4,5\\3,4,5\end{pmatrix}\\ +A\begin{pmatrix}1,2\\1,3\\\end{pmatrix} \times (-1)A\begin{pmatrix}3,4,5\\2,4,5\end{pmatrix}\\ +A\begin{pmatrix}1,2\\1,4\\\end{pmatrix} \times A\begin{pmatrix}3,4,5\\2,3,5\end{pmatrix}\\ +A\begin{pmatrix}1,2\\1,5\\\end{pmatrix} \times (-1)A\begin{pmatrix}3,4,5\\2,3,4\end{pmatrix}\\ +A\begin{pmatrix}1,2\\2,3\\\end{pmatrix} \times A\begin{pmatrix}3,4,5\\1,4,5\end{pmatrix}\\ +A\begin{pmatrix}1,2\\2,4\\\end{pmatrix} \times (-1)A\begin{pmatrix}3,4,5\\1,3,5\end{pmatrix}\\ +A\begin{pmatrix}1,2\\2,5\\\end{pmatrix} \times A\begin{pmatrix}3,4,5\\1,3,4\end{pmatrix}\\ +A\begin{pmatrix}1,2\\3,4\\\end{pmatrix} \times A\begin{pmatrix}3,4,5\\1,2,5\end{pmatrix}\\ +A\begin{pmatrix}1,2\\3,5\\\end{pmatrix} \times (-1)A\begin{pmatrix}3,4,5\\1,2,4\end{pmatrix}\\ +A\begin{pmatrix}1,2\\4,5\\\end{pmatrix} \times A\begin{pmatrix}3,4,5\\1,2,3\end{pmatrix}\\ A=A(1,21,2)×A(3,4,53,4,5)+A(1,21,3)×(1)A(3,4,52,4,5)+A(1,21,4)×A(3,4,52,3,5)+A(1,21,5)×(1)A(3,4,52,3,4)+A(1,22,3)×A(3,4,51,4,5)+A(1,22,4)×(1)A(3,4,51,3,5)+A(1,22,5)×A(3,4,51,3,4)+A(1,23,4)×A(3,4,51,2,5)+A(1,23,5)×(1)A(3,4,51,2,4)+A(1,24,5)×A(3,4,51,2,3)
  再具体以实际的矩阵展开,还是以5×55\times 55×5的矩阵为例子:
∣2241−1−1−2−3−44−2312−23−43−2−44−43−4−1∣=∣22−1−2∣×∣12−23−2−43−4−1∣+∣24−1−3∣×(−1)∣32−2−4−2−4−4−4−1∣+∣21−1−4∣×∣31−2−43−4−43−1∣+∣2−1−14∣×(−1)∣312−43−2−43−4∣+∣24−2−3∣×∣−22−23−2−44−4−1∣+∣21−2−4∣×(−1)∣−21−233−443−1∣+∣2−1−24∣×∣−21233−243−4∣+∣41−3−4∣×∣−23−23−4−44−4−1∣+∣4−1−34∣×(−1)∣−2323−4−24−4−4∣+∣1−1−44∣×∣−2313−434−43∣=58\begin{vmatrix}2 & 2 & 4 & 1 & -1\\ -1 & -2 & -3 & -4 & 4\\ -2 & 3 & 1 & 2 & -2\\ 3 & -4 & 3 & -2 & -4\\ 4 & -4 & 3 & -4 & -1\\ \end{vmatrix}\\ =\begin{vmatrix}2 & 2\\ -1 & -2\\ \end{vmatrix} \times \begin{vmatrix}1 & 2 & -2\\ 3 & -2 & -4\\ 3 & -4 & -1\\ \end{vmatrix} \\+\begin{vmatrix}2 & 4\\ -1 & -3\\ \end{vmatrix} \times (-1)\begin{vmatrix}3 & 2 & -2\\ -4 & -2 & -4\\ -4 & -4 & -1\\ \end{vmatrix} \\+\begin{vmatrix}2 & 1\\ -1 & -4\\ \end{vmatrix} \times \begin{vmatrix}3 & 1 & -2\\ -4 & 3 & -4\\ -4 & 3 & -1\\ \end{vmatrix} \\+\begin{vmatrix}2 & -1\\ -1 & 4\\ \end{vmatrix} \times (-1)\begin{vmatrix}3 & 1 & 2\\ -4 & 3 & -2\\ -4 & 3 & -4\\ \end{vmatrix} \\+\begin{vmatrix}2 & 4\\ -2 & -3\\ \end{vmatrix} \times \begin{vmatrix}-2 & 2 & -2\\ 3 & -2 & -4\\ 4 & -4 & -1\\ \end{vmatrix} \\+\begin{vmatrix}2 & 1\\ -2 & -4\\ \end{vmatrix} \times (-1)\begin{vmatrix}-2 & 1 & -2\\ 3 & 3 & -4\\ 4 & 3 & -1\\ \end{vmatrix} \\+\begin{vmatrix}2 & -1\\ -2 & 4\\ \end{vmatrix} \times \begin{vmatrix}-2 & 1 & 2\\ 3 & 3 & -2\\ 4 & 3 & -4\\ \end{vmatrix} \\+\begin{vmatrix}4 & 1\\ -3 & -4\\ \end{vmatrix} \times \begin{vmatrix}-2 & 3 & -2\\ 3 & -4 & -4\\ 4 & -4 & -1\\ \end{vmatrix} \\+\begin{vmatrix}4 & -1\\ -3 & 4\\ \end{vmatrix} \times (-1)\begin{vmatrix}-2 & 3 & 2\\ 3 & -4 & -2\\ 4 & -4 & -4\\ \end{vmatrix} \\+\begin{vmatrix}1 & -1\\ -4 & 4\\ \end{vmatrix} \times \begin{vmatrix}-2 & 3 & 1\\ 3 & -4 & 3\\ 4 & -4 & 3\\ \end{vmatrix}\\=58 2123422344431331422414241=2122×133224241+2143×(1)344224241+2114×344133241+2114×(1)344133224+2243×234224241+2214×(1)234133241+2214×234133224+4314×234344241+4314×(1)234344224+1414×234344133=58
  通过上面两个实际例子,就更容易理解拉普拉斯定理了。

Python实现

  对于线性代数里学到的东西,我习惯性地用python实验一下,以下是我的python代码:

    def laplace(self, rows):k = len(rows)n = len(self.__vectors)import com.youngthing.mathalgorithm.combinatorics.binomial_combination_tree as bctindices = [i for i in range(n)]combinations = bct.combinations(indices, k)rows_sum = sum(rows)result = 0remain_rows = [x for x in indices if x not in rows]for combination in combinations:# 子式subdeterminant = self.subdeterminant(rows, combination)# 代数余子式的符号columns_sum = sum(combination)even = (rows_sum + columns_sum) & 1 == 0# 余子式remain_columns = [x for x in indices if x not in combination]minor = self.subdeterminant(remain_rows, remain_columns)if even:result += subdeterminant * minorelse:result -= subdeterminant * minorreturn resultdef subdeterminant(self, rows, columns):array = [[self.__vectors[column][row] for row in rows] for column in columns]matrix = Matrix(array)return matrix.cofactor_expansion()

结语

  至此,我写了五种行列式的算法,定义法、chiò算法、Dodgson算法、按一行一列展开,按k行k列展开。前三种算法性能不高,计算量庞大,后两种算法只有在矩阵中含有比较多的0的时候(这种矩阵也叫稀疏矩阵)好用。接下来我要介绍一种实际应用中最常用,性能最好的算法,也就是高斯消元法。


http://www.ppmy.cn/news/18776.html

相关文章

[python刷题模板] 树的直径/换根DP

[python刷题模板] 树的直径/换根DP 一、 算法&数据结构1. 描述2. 复杂度分析3. 常见应用4. 常用优化二、 模板代码1. 单纯询问树的直径值2. 求出树的直径两端搞事情3. 换根DP求树的直径(大炮打蚊子,别这么做,只是用来帮助理解换根DP)4. 换根dp求特定…

温室大棚(Python)

Python——广度优先搜索遍历——温室大棚 温室大棚问题 问题引入 【问题描述】 在一个温室大棚中种有西红柿。该温室大棚使用种植架来种植西红柿,并使用人造光来照射西红柿。在种植架上的西红柿果实以二叉树的结构排列,二叉树的结点代表西红柿,二叉树的链接代表茎。不幸的…

一文搞懂go并发编程设计原理

前言 主要学习其设计原则,大体流程,权衡利弊 不要纠结于部分难懂的实现细节,因为不同的人对相同接口的实现细节不一样,就算是相同的人实现两次也可能不一样 context context的作用主要有两个: 在整个请求的执行过程…

《你当像鸟飞往你的山》教育让你内心的山更高,更广

《你当像鸟飞往你的山》教育让你内心的山更高,更广 塔拉韦斯特弗,美国作家、历史学家。1986年生于美国爱达荷州的山区。自学考取杨百翰大学,2009年获得剑桥大学哲学硕士学位,2014年获剑桥大学历史学博士学位。2018年出版处女座《你…

【每日一题Day94】LC1824最少侧跳次数 | 贪心

最少侧跳次数【LC1824】 给你一个长度为 n 的 3 跑道道路 ,它总共包含 n 1 个 点 ,编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacles ,…

mac 疑难问题汇总

macos 更改zsh到bash查看当前系统有哪些bash命令行:cat /etc/shells切换成bash命令行:chsh -s /bin/bashmac触摸屏轻点设置Mac通过crontab设置定时任务报错Operation not permitted1、系统偏好设置->安全性和隐私->完全磁盘访问权限2、解除锁定允许…

Vue3【组合式API、setup、响应式原理、ref对象解包、模板的语法、v-bind】

文章目录组合式APIsetup响应式原理ref对象解包模板的语法v-bind组合式API 在组合式api中直接声明的变量,就是一个普通的变量,不是响应式属性修改这些属性时,不会在视图中产生效果可以通过 reactive()来创建一个响应式的对象在setup()中可以通…

【自然语言处理】Gensim中的Word2Vec

Gensim中的Word2VecBOW 和 TF-IDF 都只着重于词汇出现在文件中的次数,未考虑语言、文字有上下文的关联,针对上下文的关联,Google 研发团队提出了词向量 Word2vec,将每个单字改以上下文表达,然后转换为向量,…