定义
\(n\) 阶矩阵 \(A\) 的行列式记为 \(\det A\) 或 \(|A|\),是一个值。
它代表由 \(n\) 个 \(n\) 维向量 \((a_{1,1},a_{1,2},\cdots,a_{1,n})\),\((a_{2,1},a_{2,2},\cdots,a_{2,n})\),\(\cdots\),\((a_{n,1},a_{n,2},\cdots,a_{n,n})\) 组成的 \(n\) 维几何体的 \(n\) 维体积。
例如,当 \(n=2\) 时,\(\det A\) 代表的就是一个平行四边形的面积(不是三角形)。
莱布尼兹行列式公式
对于一个 \(n\) 阶矩阵 \(A\),我们枚举 \(1\) 到 \(n\) 的所有排列 \(p_i\),记 \(p_i\) 的逆序对个数为 \(v_i\),则 \(\det(A)=\sum_{i=1}^{n!} (-1)^{v_i} \times \prod_{k=1}^{n} a_{k,p_{i,k}}\)。
用人话说,就是在矩阵中每行每列各选一个值求积,若逆序对个数为偶数,则在答案上加上这个积,否则减去,最终求出的答案就是 \(\det A\)。
考虑以上OI中能用到的两个公式,简单理解一下,你会发现下面这个鬼东西就是上面向量的叉乘(至少二维和三维能解释)。
其他东东
余子式
一个矩阵去掉元素 \(a_{i,j}\) 所在的行与列余下的是一个边长为 \(n-1\) 的矩阵,这个矩阵的行列式就是元素 \(a_{i,j}\) 的余子式,记为 \(M_{i,j}\)。
将元素 \(a_{i,j}\) 的余子式像求行列式一样乘上 \((-1)^{i+j}\) 就是代数余子式,记为 \(A_{i,j}\)。
性质
-
矩阵的某一行/列全为 \(0\),则行列式为 \(0\)。
用莱布尼兹行列式展开易证。
-
交换矩阵的两行/两列,行列式变换符号。
考虑每一个排列对应的乘积,相当于在排列里交换两个,正好取反。
-
矩阵如果有两行/两列相等,则 \(\det A=0\)。
考虑交换这两行得到 \(A'\),由于两行/列相等,所以 \(A'=A\),\(\det A'=\det A\),又 \(\det A'=-\det A\),\(\therefore \det A=0\)。
-
将矩阵的某一行提出一个公因数 \(k\) 得到 \(A'\),则 \(\det A=k\det A'\)。
易证。
-
如果两个矩阵 \(A,B\) 除了第 \(i\) 行后都与矩阵 \(C\) 相等,而 \(C_{i,k}=A_{i,k}+B_{i,k}\),则 \(\det A+\det B=\det C\)。
乘法分配律,对于减法也是适用的。
-
将矩阵 \(A\) 的某一行/某一列加/减到另一行/列上,行列式不变。
以加为例,令加后的矩阵为 \(A'\),将被加行替换为某一行的矩阵为 \(A_{del}\),则 \(\det A=\det A'+\det A_{del}\),又有性质 \(3\),所以 \(\det A_{del}=0\),即证。
-
若 \(A\) 有两行或两列对应成比例,则 \(\det A=0\)。
由性质 \(6\) 一倍一倍消为 \(0\) 即可。
一些式子/定理
-
矩阵的行列式对于任意一行或一列的元素乘上代数余子式之和
\[\det A=\sum_{i=1}^{n} a_{k,i} \times A_{k,i}=\sum_{i=1}^{n} a_{i,k} \times A_{i,k} \]证明:
对于每一个元素,考虑所有取到这个元素的乘积对行列式的贡献。
对于任意一个 \(M_{i,j}\) 中的乘积,它在加入 \(a_{i,j}\) 后对原矩阵行列式的贡献的绝对值都是乘 \(a_{i,j}\)。
考虑强行加入 \(p_i=j\) 时对整个排列逆序对的贡献,发现即为下图涂黄区域中取的元素个数。
如果原来的 \(p\) 是一个递增序列,那么在黄色区域中的数量就是 \(|i-j|\) ,与 \(i+j\) 同余。
如果我们交换 \(p\) 中的两个元素,相当于选一个子矩阵,将其中两个顶点换为另外两个,黄色区域中元素数量奇偶性不变。
所以经过 \(a_{i,j}\) 的排列对行列式的贡献就是 \(a_{i,j} \times A_{i,j}\),即证。
-
若 \(A\) 是一个三角矩阵,则 \(\det A=\prod_{i=1}^{n} a_{i,i}\)。
由于三角矩阵只在对角线以及对角线的一侧有值,直接用莱布尼兹行列式展开,发现只有这一个有值。
-
一个矩阵的行列式等于其转置矩阵的行列式。
\[\det A^T=\det A \]证明请自行求助此处。
求值
观察性质,我们会发现和高斯消元十分一致,于是利用高斯消元求解。
我们可以将原矩阵消为一个三角矩阵/对角线矩阵,于是直接计算对角线之积即可,复杂度 \(O(n^3)\)。