Skip to main content

行列式

参考资料

引入

行列式(Determinant)是把一个 方阵 映射到一个 的函数,记为 detA\det AA|A|

不要把它当成一堆符号的机械组合。行列式有非常清晰的几何含义:它衡量一个线性变换把 空间「放大」了多少倍

  • 二阶行列式 = 两个行(列)向量张成的 平行四边形的有向面积
  • 三阶行列式 = 三个向量张成的 平行六面体的有向体积
  • nn 阶行列式 = nn 个向量张成的 nn平行多面体的有向超体积

「有向」是关键:面积/体积可以是负的,符号记录了变换有没有把空间 翻面(改变定向)。比如二维里若把一对基向量的左右关系对调,面积就变号。

由此立刻能看懂一条最重要的事实:

detA=0    n 个行(列)向量线性相关\det A=0\iff n\ \text{个行(列)向量线性相关}

因为体积为 00 意味着这些向量被压扁到了更低维的子空间里,张不出「饱满」的 nn 维体。这正是后面判断矩阵 可逆性 的核心。

tip

记住一句话就抓住了主线:行列式是线性变换的「体积缩放因子」。 它告诉你单位立方体经过变换 AA 之后变成的图形,体积是原来的 detA|\det A| 倍,而符号告诉你定向有没有翻转。detA=0\det A=0 就是「被压扁了」。

几何意义

AA 把单位正方形的两条边 e1,e2\vec e_1,\vec e_2 分别送到列向量 a1,a2\vec a_1,\vec a_2,那么这两个像向量张成的平行四边形面积恰好是 detA|\det A|。三维同理,得到平行六面体体积。

由此能 不算一个数 就理解行列式的几条性质:

  • 把某一列翻倍,对应的平行四边形沿那个方向拉长一倍,面积也翻倍 —— 所以某一行(列)的公因子能提到行列式外。
  • 交换两列,相当于把图形「翻面」,定向反转,面积变号。
  • 给某一列加上另一列的若干倍(错切,shear),平行四边形被「推斜」但底和高不变,面积不变 —— 这正是「某行加另一行的 kk 倍行列式不变」。
  • 两列相同(或成比例),平行四边形退化成一条线段,面积为 00

乘法性质也变得显然:连续做两个变换 A,BA,B,体积缩放因子相乘,所以

det(AB)=detAdetB\det(AB)=\det A\cdot\det B

定义

二阶与三阶

abcd=adbc\begin{vmatrix}a&b\\c&d\end{vmatrix}=ad-bc a1b1c1a2b2c2a3b3c3=a1b2c3+a2b3c1+a3b1c2a3b2c1a2b1c3a1b3c2\begin{vmatrix}a_1&b_1&c_1\\a_2&b_2&c_2\\a_3&b_3&c_3\end{vmatrix}=a_1b_2c_3+a_2b_3c_1+a_3b_1c_2-a_3b_2c_1-a_2b_1c_3-a_1b_3c_2

记忆口诀:对角线法则(沙路法)—— 主对角线方向三项取正,副对角线方向三项取负。

例:算 1234567810\begin{vmatrix}1&2&3\\4&5&6\\7&8&10\end{vmatrix}。正项是三条「左上到右下」对角线 1510+267+348=50+84+96=2301\cdot5\cdot10+2\cdot6\cdot7+3\cdot4\cdot8=50+84+96=230,负项是三条「右上到左下」对角线 357+168+2410=105+48+80=2333\cdot5\cdot7+1\cdot6\cdot8+2\cdot4\cdot10=105+48+80=233,相减得 230233=3230-233=-3

tip

对角线法则 只对二阶、三阶成立,四阶及以上完全不能用。高阶行列式要么按定义(逆序数),要么按行(列)展开,要么化成三角形。

排列与逆序数

nn 阶行列式的一般定义建立在 排列(Permutation)之上。把 1,2,,n1,2,\dots,n 的一个排列记作 σ=(σ(1),σ(2),,σ(n))\sigma=(\sigma(1),\sigma(2),\dots,\sigma(n))

逆序数(Number of Inversions)τ(σ)\tau(\sigma):排列中前面的数大于后面的数的「逆序对」个数。逆序数为偶则称 偶排列,为奇则称 奇排列。排列的 符号

sgn(σ)=(1)τ(σ)\operatorname{sgn}(\sigma)=(-1)^{\tau(\sigma)}

例:求排列 (3,1,4,2)(3,1,4,2) 的逆序数。逐个数后面比它小的元素:33 后面有 1,21,2 两个比它小,记 2211 后面没有更小的,记 0044 后面有 22 一个,记 1122 后面没有,记 00。合计 τ=2+0+1+0=3\tau=2+0+1+0=3,是奇排列,符号为 (1)3=1(-1)^3=-1

例:用逆序数定义算 a11a12a13a21a22a23a31a32a33\begin{vmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{vmatrix}。从每行各取一个分处不同列的元素,列下标取遍 1,2,31,2,3 的全部 3!=63!=6 个排列,每项带符号 (1)τ(-1)^{\tau}

(1,2,3), τ=0: +a11a22a33(2,3,1), τ=2: +a12a23a31(3,1,2), τ=2: +a13a21a32(3,2,1), τ=3: a13a22a31(2,1,3), τ=1: a12a21a33(1,3,2), τ=1: a11a23a32\begin{aligned} &(1,2,3),\ \tau=0:\ +a_{11}a_{22}a_{33}\\ &(2,3,1),\ \tau=2:\ +a_{12}a_{23}a_{31}\\ &(3,1,2),\ \tau=2:\ +a_{13}a_{21}a_{32}\\ &(3,2,1),\ \tau=3:\ -a_{13}a_{22}a_{31}\\ &(2,1,3),\ \tau=1:\ -a_{12}a_{21}a_{33}\\ &(1,3,2),\ \tau=1:\ -a_{11}a_{23}a_{32} \end{aligned}

六项相加正好是上面的三阶公式,对角线法则不过是它的图形记忆。

nn 阶(按排列定义)

detA=σSnsgn(σ)a1σ(1)a2σ(2)anσ(n)\det A=\sum_{\sigma\in S_n}\operatorname{sgn}(\sigma)\,a_{1\sigma(1)}a_{2\sigma(2)}\cdots a_{n\sigma(n)}

直观理解:行列式是「从每行各取一个元素、且这些元素分处不同列」的所有取法的乘积之和,每一项再按取法的奇偶性带上 ±\pm 号。共有 n!n! 项,正负项各占一半。

tip

这个定义计算量是 n!n!,纯粹用于理论分析,绝不要拿它去算具体行列式。实战靠展开和初等变换。但它解释了一个常用结论:行列式中只要某一行(或列)全为 00,每一项里都会含这一行的因子,于是行列式为 00

性质

AA 的行(或列)看作一组向量,行列式满足下面这些性质。由于 detAT=detA\det A^T=\det A对行成立的对列同样成立

性质描述
转置不变detAT=detA\det A^T=\det A
交换两行(列)行列式 变号
某行(列)有公因子 kk可把 kk 提到行列式外;故 det(kA)=kndetA\det(kA)=k^n\det A
两行(列)相同或成比例行列式 00
某行(列)全为 00行列式 00
某行加另一行的 kk行列式 不变
按某行(列)可加性某行写成两行之和时,行列式可拆成两个行列式之和

由乘法性质 det(AB)=detAdetB\det(AB)=\det A\det B 还能推出:

det(A1)=1detA,det(Am)=(detA)m\det(A^{-1})=\frac{1}{\det A},\qquad \det(A^m)=(\det A)^m
tip

「某行加另一行的 kk 倍」(记号 ri+krjr_i+kr_j)是化简最常用的初等变换,它 不改变行列式值,是计算高阶行列式的主力。注意区分:交换两行要变号、某行乘 kk 要乘 kk,只有「加倍数」这一种变换不影响结果。

按行(列)展开

余子式与代数余子式

  • 余子式(Minor)MijM_{ij}:划去第 ii 行第 jj 列后,剩下的 (n1)(n-1) 阶行列式。
  • 代数余子式(Cofactor)Aij=(1)i+jMijA_{ij}=(-1)^{i+j}M_{ij}

符号 (1)i+j(-1)^{i+j} 排成棋盘格:左上角为 ++,相邻格交替变号。

拉普拉斯展开定理

沿任意一行或一列展开,结果都等于行列式本身:

A=j=1naijAij(按第 i 行),A=i=1naijAij(按第 j 列)|A|=\sum_{j=1}^{n}a_{ij}A_{ij}\quad(\text{按第 }i\text{ 行}),\qquad |A|=\sum_{i=1}^{n}a_{ij}A_{ij}\quad(\text{按第 }j\text{ 列})

实战中 挑零最多的那一行(列)展开,能少算很多项。

例:算 3002120541302001\begin{vmatrix}3&0&0&2\\1&2&0&5\\4&1&3&0\\2&0&0&1\end{vmatrix}。第 33 列只有一个非零元 a33=3a_{33}=3,按它展开最省事:

A=a33A33=3(1)3+3302125201|A|=a_{33}A_{33}=3\cdot(-1)^{3+3}\begin{vmatrix}3&0&2\\1&2&5\\2&0&1\end{vmatrix}

这个三阶行列式的第 22 列又只有 a22=2a_{22}=2 非零,再按第 22 列展开:

302125201=2(1)2+23221=2(34)=2\begin{vmatrix}3&0&2\\1&2&5\\2&0&1\end{vmatrix}=2\cdot(-1)^{2+2}\begin{vmatrix}3&2\\2&1\end{vmatrix}=2(3-4)=-2

于是 A=3×(2)=6|A|=3\times(-2)=-6。挑零多的行列展开,把一个四阶行列式两步压成了二阶。

重要恒等式

如果用某一行的元素去乘 另一行 的代数余子式再求和,结果恒为 00

j=1naijAkj={A,i=k0,ik\sum_{j=1}^{n}a_{ij}A_{kj}=\begin{cases}|A|,&i=k\\0,&i\ne k\end{cases}

直观解释:iki\ne k 时,这个和相当于把矩阵的第 kk 行换成了第 ii 行(两行相同)的行列式,自然为 00。这条恒等式正是 伴随矩阵 AA=AEAA^*=|A|E 的来源(详见 矩阵)。

计算技巧

化为三角形

最通用的方法:用 ri+krjr_i+kr_j 把行列式化成上(下)三角形,再取对角线元素之积。整个过程行列式值不变(只用了「加倍数」变换),若中途交换了行别忘了变号。

例:算 211132113\begin{vmatrix}2&1&-1\\1&3&2\\1&-1&3\end{vmatrix}。先用第 11 行把第 2233 行的首元消成 00r212r1r_2-\frac12 r_1r312r1r_3-\frac12 r_1,不变号):

211132113r212r1, r312r12110525203272\begin{vmatrix}2&1&-1\\1&3&2\\1&-1&3\end{vmatrix} \xrightarrow{r_2-\frac12 r_1,\ r_3-\frac12 r_1} \begin{vmatrix}2&1&-1\\0&\frac52&\frac52\\0&-\frac32&\frac72\end{vmatrix}

再用第 22 行消第 33 行(r3+35r2r_3+\frac35 r_2):

r3+35r221105252005=2525=25\xrightarrow{r_3+\frac35 r_2} \begin{vmatrix}2&1&-1\\0&\frac52&\frac52\\0&0&5\end{vmatrix}=2\cdot\frac52\cdot5=25

对角线相乘即得 2525。若嫌分数烦,也可先把首行首列凑出 11 再消,思路一致。

三角行列式

a11a220ann=a11a22ann\begin{vmatrix}a_{11}&*&\cdots&*\\&a_{22}&\cdots&*\\&&\ddots&\vdots\\0&&&a_{nn}\end{vmatrix}=a_{11}a_{22}\cdots a_{nn}

上三角、下三角、对角行列式都等于 对角线元素之积

加边法(升阶法)

当各行(列)有公共规律时,给行列式补一行一列、凑出便于消元的结构,再展开化简。常用形式是在左上角添一个 11、首行首列补上辅助元素,不改变原行列式的值。

例:算 nn 阶行列式 Dn=a+1111a+1111a+1D_n=\begin{vmatrix}a+1&1&\cdots&1\\1&a+1&\cdots&1\\\vdots&\vdots&\ddots&\vdots\\1&1&\cdots&a+1\end{vmatrix}(对角为 a+1a+1,其余全 11)。在左上角加一行一列:

Dn=11110a+11101a+11011a+1D_n=\begin{vmatrix}1&1&1&\cdots&1\\0&a+1&1&\cdots&1\\0&1&a+1&\cdots&1\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&1&1&\cdots&a+1\end{vmatrix}

首列除左上角全为 00,按首列展开值不变。现在每一行(除首行)减去首行,把 a+1a+1 变成 aa、把那些 11 变成 00

rir1(i2)11111a0010a0100a\xrightarrow{r_i-r_1\,(i\ge2)} \begin{vmatrix}1&1&1&\cdots&1\\-1&a&0&\cdots&0\\-1&0&a&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\-1&0&0&\cdots&a\end{vmatrix}

再把第 2(n+1)2\sim(n+1) 列各乘 1a\frac1a 加到第 11 列(消去那些 1-1),第 11 列左上角变成 1+na1+\frac na,其余化零,化成下三角:

Dn=(1+na)an=an1(a+n)D_n=\left(1+\frac na\right)a^n=a^{n-1}(a+n)

验证 n=1n=1:原式应为 a+1a+1,公式给 a0(a+1)=a+1a^0(a+1)=a+1,吻合。

范德蒙德行列式

Vn=111x1x2xnx12x22xn2x1n1x2n1xnn1=1i<jn(xjxi)V_n=\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&&\vdots\\x_1^{n-1}&x_2^{n-1}&\cdots&x_n^{n-1}\end{vmatrix}=\prod_{1\le i<j\le n}(x_j-x_i)

只要 x1,x2,,xnx_1,x_2,\dots,x_n 两两不同,范德蒙德行列式就非零。这一点在多项式插值、特征值理论里反复出现 —— 它保证了「过 nn 个不同横坐标的点恰有唯一的 n1n-1 次插值多项式」。

例:算 111123149\begin{vmatrix}1&1&1\\1&2&3\\1&4&9\end{vmatrix}。这是 x1=1,x2=2,x3=3x_1=1,x_2=2,x_3=3 的三阶范德蒙德行列式,直接套公式 i<j(xjxi)\prod_{i<j}(x_j-x_i)

(x2x1)(x3x1)(x3x2)=(21)(31)(32)=121=2(x_2-x_1)(x_3-x_1)(x_3-x_2)=(2-1)(3-1)(3-2)=1\cdot2\cdot1=2

也可手算核对:第 11 行不动,r3r2r_3-r_2r2r1r_2-r_1 后按第 11 列展开同样得 22。识别出范德蒙德结构,能省去整套消元。

行(列)和相等

若每一行元素之和都等于同一个常数 cc,可把各列加到第一列,提出公因子 cc,再化简。这类「轮换对称」的行列式常用此法。

例:算 311131113\begin{vmatrix}3&1&1\\1&3&1\\1&1&3\end{vmatrix}。每行元素之和都是 55,把第 2233 列加到第 11 列,第 11 列全变成 55,提出公因子:

c1+c2+c3511531513=5111131113\xrightarrow{c_1+c_2+c_3} \begin{vmatrix}5&1&1\\5&3&1\\5&1&3\end{vmatrix} =5\begin{vmatrix}1&1&1\\1&3&1\\1&1&3\end{vmatrix}

r2r1r_2-r_1r3r1r_3-r_1 把第 11 列下方消零,化成上三角:

=5111020002=5122=20=5\begin{vmatrix}1&1&1\\0&2&0\\0&0&2\end{vmatrix}=5\cdot1\cdot2\cdot2=20

三对角与递推行列式

只有主对角线及其上下两条相邻对角线非零的行列式称 三对角行列式。它没有简单闭式,但按第一行(列)展开会落到 递推关系 上。设

Dn=abcabcabcaD_n=\begin{vmatrix}a&b&&&\\c&a&b&&\\&c&a&\ddots&\\&&\ddots&\ddots&b\\&&&c&a\end{vmatrix}

按第一行展开,第二项再按其第一列展开,得到递推式:

Dn=aDn1bcDn2D_n=a\,D_{n-1}-bc\,D_{n-2}

例:算主对角全 22、上下相邻对角全 11nn 阶行列式(a=2,b=c=1a=2,b=c=1)。递推为 Dn=2Dn1Dn2D_n=2D_{n-1}-D_{n-2},初值 D1=2D_1=2D2=2112=3D_2=\begin{vmatrix}2&1\\1&2\end{vmatrix}=3。逐项算:D3=232=4D_3=2\cdot3-2=4D4=243=5D_4=2\cdot4-3=5,看出规律 Dn=n+1D_n=n+1。它正是特征方程 x22x+1=0x^2-2x+1=0 有重根 x=1x=1 的情形,通解形如 (A+Bn)1n(A+Bn)\cdot1^n,代初值得 Dn=n+1D_n=n+1

克拉默法则

设线性方程组 Ax=bA\vec x=\vec b,其中 AAnn 阶方阵且 A0|A|\ne 0,则方程组有 唯一解

xj=AjA,j=1,2,,nx_j=\frac{|A_j|}{|A|},\quad j=1,2,\dots,n

其中 AjA_j 是把 AA 的第 jj 列换成常数列 b\vec b 得到的矩阵。

例:用克拉默法则解 {x1+x2+x3=6x1x2+2x3=52x1+x2x3=1\begin{cases}x_1+x_2+x_3=6\\x_1-x_2+2x_3=5\\2x_1+x_2-x_3=1\end{cases}。系数行列式

A=111112211=1(12)1(14)+1(1+2)=1+5+3=70|A|=\begin{vmatrix}1&1&1\\1&-1&2\\2&1&-1\end{vmatrix}=1(1-2)-1(-1-4)+1(1+2)=-1+5+3=7\ne0

非零,故有唯一解。把第 11 列换成常数列 (6,5,1)T(6,5,1)^T

A1=611512111=6(12)1(52)+1(5+1)=6+7+6=7|A_1|=\begin{vmatrix}6&1&1\\5&-1&2\\1&1&-1\end{vmatrix}=6(1-2)-1(-5-2)+1(5+1)=-6+7+6=7

换第 22 列、第 33 列同理:

A2=161152211=14,A3=116115211=21|A_2|=\begin{vmatrix}1&6&1\\1&5&2\\2&1&-1\end{vmatrix}=14,\qquad |A_3|=\begin{vmatrix}1&1&6\\1&-1&5\\2&1&1\end{vmatrix}=21

于是 x1=A1A=1x_1=\frac{|A_1|}{|A|}=1x2=147=2x_2=\frac{14}{7}=2x3=217=3x_3=\frac{21}{7}=3。代回原方程:1+2+3=61+2+3=612+6=51-2+6=52+23=12+2-3=1,全部吻合。

tip

克拉默法则在 理论上 很漂亮(给出解的闭式表达),但 计算上很笨:解 nn 元方程组要算 n+1n+1nn 阶行列式,远不如高斯消元高效。它的主要价值是理论分析,以及强调「A0|A|\ne 0」这个唯一解的前提。

适用条件

克拉默法则只在 系数矩阵为方阵且 A0|A|\ne 0 时适用。一旦 A=0|A|=0,法则失效,方程组要么无解、要么有无穷多解,此时只能改用 增广矩阵的秩 来判定(详见 线性方程组与向量组)。

齐次方程组

对齐次方程组 Ax=0A\vec x=\vec 0AA 为方阵):

  • A0|A|\ne 0:只有 零解
  • A=0|A|=0:有 非零解

几何上,A=0|A|=0 意味着变换把空间压扁,于是有非零向量被映成 0\vec 0

行列式与矩阵的关系

行列式 detA\det A矩阵 AA
0\ne 0可逆(非奇异),r(A)=nr(A)=n
=0=0不可逆(奇异),r(A)<nr(A)<n

这张表是连接 行列式、可逆性、秩、方程组解的存在性 的枢纽,后续章节会反复用到。详见 矩阵