首页 > 其他分享 >【笔记】矩阵的行列式

【笔记】矩阵的行列式

时间:2024-07-25 09:29:50浏览次数:10  
标签:begin end 矩阵 笔记 vmatrix ij 行列式 Theorem

定义

行列式(Determinant)是对 \(n\) 阶方阵 \(A\) 定义的,是一个标量。\(A\) 的 \(n\) 阶行列式 \(\operatorname{det}(A)\) 或 \(|A|\) 定义如下:

\[\operatorname{det}(A)=\sum_p(-1)^{\operatorname{sgn}(p)}\prod_{i}A[i][p_i] \]

这里将排列的奇偶性定义为了 \(\operatorname{sgn}(p)\),\(p\) 是排列,\(\operatorname{sgn}(p)\) 是 \(p\) 的逆序对个数的奇偶性。枚举所有排列,每一行挑一个乘起来,拿逆序对相关的东西做系数。

排列奇偶性

对于排列 \(p\),交换 \(p_i,p_j\)(其中 \(1\leq i<j\leq n\)),\(\operatorname{sgn}(p)\) 的奇偶性改变。

假设 \(i<j\),令 \(l=j-i\)。先将 \(a_j\) 调至 \(a_i\) 前,考虑这一步操作的影响。原来 \(a_j\) 与 \(a_{[i,j)}\) 的组合,顺序对设为 \(a\) 个,逆序对设为 \(b\) 个,那么 \(a+b=l\),现在将 \(a_j\) 调至 \(a_i\) 前,顺序对变为 \(b\) 个,逆序对变为 \(a\) 个,所以变化量 \(a-b\equiv a-b+2b\equiv a+b\equiv l\pmod 2\)。再将 \(a_i\) 调至原来 \(a_j\) 的位置,变化量与 \(l-1\) 同奇偶,那么总的变化量是 \(l+l-1\equiv 1\pmod 2\)。

行列式性质

Theorem 1

单位矩阵的行列式为 \(1\),上三角矩阵、下三角矩阵(对角线下/上全零的矩阵)的行列式为对角线乘积。

考虑选数乘起来的过程,如果不选零,那么归纳发现只有一种选法,就是选对角线。

Theorem 2

交换两行,行列式变号。

对于每个排列,这个交换两行只会影响 \(\operatorname{sgn}(p)\) 的奇偶性,由 Lemma 1 得 \(\operatorname{sgn}(p)\) 奇偶性改变,所以 \((-1)^{\operatorname{sgn}(p)}\) 全部变号,行列式变号。

Theorem 3

某一行乘以 \(t\),行列式值乘以 \(t\)。

因为每行只选一个数进行乘积。

Theorem 4

\(\displaystyle\begin{vmatrix}a_1+a_2&b_1+b_2\\c&d\end{vmatrix}=\begin{vmatrix}a_1&b_1\\c&d\end{vmatrix}+\begin{vmatrix}a_2&b_2\\c&d\end{vmatrix}.\)

由乘法分配律得到。

Theorem 4,5 合起来是行的线性性

Theorem 5

有两行相同,行列式为 \(0\)。

如果交换这两行,行列式应该变号,但是方阵还是那个方阵,行列式的值应该没有改变。

Theorem 6

用一行的倍数加到另一行,行列式不变。即证明 \(\displaystyle\begin{vmatrix}a&b\\c&d\end{vmatrix}=\begin{vmatrix}a&b\\c+ka&d+kb\end{vmatrix}\)。

由 Theorem 4 得 \(\displaystyle\begin{vmatrix}a&b\\c+ka&d+kb\end{vmatrix}=\begin{vmatrix}a&b\\c&d\end{vmatrix}+\begin{vmatrix}a&b\\ka&kb\end{vmatrix}\)。

右边那个对第二行乘 \(\dfrac{1}{k}\),行列式值变为 \(0\),所以右边那个的行列式为 \(0\)。

行列式求值

Theorem 2,3,6 就是高斯消元用的三种操作,所以对方阵高斯消元,消成上三角矩阵,取其对角线乘积即可。

实现时,高斯消元要求有逆元;如果 \(\mathbb F_{mod}\) 下没有逆元,可以辗转消除消元。参考实现:

点击查看代码

modint 版本不知道什么时候写,不过应该比较平凡。

const int P = 998244353;
LL mod(LL x) { return (x % P + P) % P; }
void red(LL& x) { x = mod(x); }
LL det(vector<LL>* a, int n) {
  LL res = 1;
  for (int i = 0; i < n; i++)
    for (LL& x : a[i]) x = mod(x);  //最好是正数
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      while (a[i][i]) {  //最好是 a[i][i],因为下面有个除法
        LL r = a[j][i] / a[i][i];  //整除
        for (int k = i; k < n; k++) red(a[j][k] -= a[i][k] * r);
        swap(a[i], a[j]), res = -res;
      }
      swap(a[i], a[j]), res = -res;
    }
  }
  for (int i = 0; i < n; i++) red(res *= a[i][i]);
  return mod(res);
}

范德蒙德行列式

\[\begin{vmatrix} 1&1&\cdots&1\\ x_1&x_2&\cdots&x_n\\ x_1^2&x_2^2&\cdots&x_n^2\\ \vdots&\vdots&\ddots&\vdots\\ x_1^{n-1}&x_2^{n-1}&\cdots&x_n^{n-1}\\ \end{vmatrix}= \prod_{1\leq i<j\leq n}(x_j-x_i) \]

代数余子式

有方阵 \(A\),记 \(a_{ij}\) 为 \(A\) 的第 \(i\) 行第 \(j\) 列的元素。则定义 \(A\) 划去第 \(i\) 行第 \(j\) 列的行列式乘上 \((-1)^{i+j}\) 为 \(a_{ij}\) 的代数余子式,记作 \(A_{ij}\)。

有如下定理,不知道为什么:

  1. \[\forall i, \sum_{j=1}^na_{ij}A_{ij}=|A| \]

  2. \[\forall j, \sum_{i=1}^na_{ij}A_{ij}=|A| \]

  3. \[\forall i\neq k, \sum_{j=1}^na_{ij}A_{kj}=0 \]

  4. \[\forall j\neq k, \sum_{j=1}^na_{ij}A_{ik}=0 \]

克莱默法则

用于解形如 \(A\mathbf x=\mathbf b\) 的 \(n\) 元一次方程组,\(A\) 的大小为 \(n\times n\),\(A\) 的行列式不为 \(0\)。

结论:\(x_i=\dfrac{|A_i|}{|A|}\)。其中 \(A_i\) 表示将 \(A\) 的第 \(i\) 列替换为 \(\mathbf b\) 得到的方阵,\(|A|\) 是 \(A\) 的行列式。

当 \(A\) 的行列式为 \(0\) 时,说明方程组无解或无穷解。

也可以写成 \(\mathbf x=A^{-1}\mathbf b\)。不知道为什么这两个东西等价。

标签:begin,end,矩阵,笔记,vmatrix,ij,行列式,Theorem
From: https://www.cnblogs.com/caijianhong/p/18322272

相关文章

  • C++学习笔记(03)——通讯录管理系统设计
    记录一下利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人查找联系人:按照姓名查看指定联系人......
  • 错误“对于非平面校准装置,必须在函数‘cvCalibrateCamera2Internal’中指定初始固有矩
    我遇到的错误的完整跟踪:在stereo_calibrate中ret,cameraMatrix1,distCoeffs1,cameraMatrix2,distCoeffs2,R,T,E,F,perViewErrors,_,_=cv2.stereoCalibrateExtended(cv2.error:OpenCV(4.10.0)/io/opencv/modules/calib3d/src/calibration.cpp:1682:error:(-5:Badargument)......
  • JS笔记第六期(DOM练习)-使用JS实现用户添加删除
    要实现的界面为:界面的CSS样式:*{ margin:0auto;}th,td{ width:200px; height:50px; text-align:center; font-size:20px;}.tBox{ border:#0000001pxsolid; width:450px; height:250px; margin:0auto; padding:10px; }JS+HTML:<!DOCTYP......
  • 弦图 学习笔记
    弦图学习笔记定义弦图中任意\(k\ge4\)阶环都有弦,等价于对于任意导出子图都不是\(k\ge4\)阶环。单纯点单纯点的邻域是团。完美消除序列(akapeo)点的排列,使得\(\foralli,v_i\)在\(\{v_i,v_{i+1},...,v_n\}\)的诱导子图中是单纯点。点割集\((u,v)\)的点割......
  • 树形 dp 学习笔记
    状态设计基本上每一种dp都有一种标准的dp定义方式,树形dp也是如此:定义\(f[u]\)表示以\(u\)为根节点的子树里最优的决策。从分析子树入手,转移便是找到某一子树中,根节点与各子树、边权间的递推关系。最优解常常是关于根节点的函数。它的子结构是一颗子树。实现方式......
  • 测开学习路线笔记
    Pytest源码包含了很多插件入口点(调用插件)如何搭建一个测试平台Django在线编辑Excel、yaml文件Pytest读取执行,生成测试报告、日志记录Django展示结果和测试报告如何开发一个Pytest插件HOOK:约定查看源码hookspec.py查看文档HOOK规则:被动调用(被pytest自......
  • 弦图学习笔记
    1.定义弦(chord):对于一个点数大于等于4的简单环,连接环上不相邻两点的边称作弦。弦图:对于无向图\(G\),如果其每个点数大于等于4的简单环都存在至少一条弦,则称这个图是弦图。这个定义等价于:图\(G\)的任何诱导子图不是\(K\)阶环(\(K\ge4\))。单纯点:对于任意的无向图......
  • 基于CAT的VBM和SBM计算学习笔记(一)VBM
    前言  基于体素的形态学方法(voxel-basedmorphometry,VBM),是大脑结构研究中最常见的指标。我刚开始学习fMRI数据处理时主要都聚焦在功能差异的研究,但接触了一批受外伤的被试,对其脑结构的改变产生兴趣,遂学习之。 VBM用T1计算,稳定性强;覆盖全脑,全面性强;而且其计算软件发......
  • 算法笔记|Day6哈希表基础II
    算法笔记|Day6哈希表基础II☆☆☆☆☆leetcode454.四数相加II题目分析代码☆☆☆☆☆leetcode383.赎金信题目分析代码☆☆☆☆☆leetcode15.三数之和题目分析代码☆☆☆☆☆leetcode18.四数之和题目分析代码☆☆☆☆☆leetcode454.四数相加II题目链接:leetco......
  • Living-Dream 系列笔记 第64期
    树的重心当\(u\)作为根时,其节点数最大的子树最小,则称\(u\)为树的重心。性质一:节点数最大的子树的节点数不超过\(\frac{节点总数}{2}\)。(反证法,若某重心\(u\)的节点数最大的子树的节点数超过\(\frac{节点总数}{2}\),则将其一个子节点提起来会更优)性质二:至多两个且一......