线性代数(6):行列式

线性代数(6):行列式

行列式及其性质

前面的章节已经学习了大量关于矩阵的知识,现在我们来集中探讨一下方阵的性质,其中行列式和特征值是重中之重,本章来单独讨论行列式。

行列式(Determinants)

行列式是每个方阵都具有的值,我们将矩阵AA的行列式记作det(A)=Adet(A) = |A|。行列式将很多矩阵信息压缩到这一个数值中,例如矩阵的不可逆(奇异矩阵)与行列式的值为00等价(也就是说行列式可以直接判断矩阵是否可逆)。

性质

我们先从行列式最主要的三个性质开始讲起,因为这三个性质定义了行列式,然后再拓展到其他性质上。

(1)单位矩阵的行列式为11

例如二维单位矩阵:det(I)=100010001=1det(I) = \begin{vmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1\end{vmatrix} = 1

(2)如果发生行交换,那么行列式的正负号会改变。

将性质(1)和性质(2)结合在一起,就能得到所有置换矩阵PP的行列式。

例如

1001=1\begin{vmatrix} 1 & 0 \\ 0 & 1\end{vmatrix} = 1

0110=1\begin{vmatrix} 0 & 1 \\ 1 & 0\end{vmatrix} = -1

通过该性质还可以得出,置换矩阵PP具有奇偶性,也就是说,一个矩阵不可能经过奇数次置换得到和偶数次置换相同的方阵。

性质(3)有两个,分别为

(3)a. tatbcd=tabcd\begin{vmatrix} ta & tb \\ c & d\end{vmatrix} = t\begin{vmatrix} a & b \\ c & d\end{vmatrix}

(3)b. a+ab+bcd=abcd+abcd\begin{vmatrix} a+a' & b+b' \\ c & d\end{vmatrix} = \begin{vmatrix} a & b \\ c & d\end{vmatrix}+\begin{vmatrix} a' & b' \\ c & d\end{vmatrix}

为什么说由以上三个性质可以定义行列式,因为行列式其余的性质皆可由上述三个性质推导而出,以下是行列式其余的性质及它们的推导过程。

(4)如果矩阵中的两行相等,则它的行列式为00

矩阵中的两行相等,意味着发生两行交换时,行列式不变,根据性质(2):“如果发生行交换,那么行列式的正负号会改变。”,那么行列式只能为00

(5)行列式不因消元操作而改变。

证明:

abcladlb=abcd+ablalb((3)b.)=abcdlabab((3)a.)=abcd((4))\begin{vmatrix} a & b \\ c-la & d-lb\end{vmatrix} = \begin{vmatrix} a & b \\ c & d\end{vmatrix} + \begin{vmatrix} a & b \\ -la & -lb\end{vmatrix}(性质(3)b.) = \begin{vmatrix} a & b \\ c & d\end{vmatrix} - l\begin{vmatrix} a & b \\ a & b\end{vmatrix}(性质(3)a.) = \begin{vmatrix} a & b \\ c & d\end{vmatrix}(性质(4))

(6)若矩阵中有一行是00,那么行列式为00

矩阵中有一行是0,可以看作00cd=a×0b×0cd\begin{vmatrix} 0 & 0 \\ c & d\end{vmatrix} = \begin{vmatrix} a×0 & b×0 \\ c & d\end{vmatrix},那么有

a×0b×0cd=0abcd=0\begin{vmatrix} a×0 & b×0 \\ c & d\end{vmatrix} = 0\begin{vmatrix} a & b \\ c & d\end{vmatrix} = 0

(7)对于三角阵的行列式,主元的乘积等于行列式。例如在四维中,设上三角矩阵U=[u11u12u13u140u22u23u2400u33u34000u44]U=\left[\begin{matrix} u_{11} & u_{12} & u_{13} & u_{14} \\ 0 & u_{22} & u_{23} & u_{24} \\ 0 & 0 & u_{33} & u_{34} \\ 0 & 0 & 0 & u_{44}\end{matrix}\right],则det(U)=u11×u22×u33×u44det(U) = u_{11}×u_{22}×u_{33}×u_{44}nn维同理。

对于三角矩阵,我们可以通过不断地消元最终得到对角矩阵,例如,通过消元法可以得到

U=[u11u12u13u140u22u23u2400u33u34000u44]=[u110000u220000u330000u44]=DU=\left[\begin{matrix} u_{11} & u_{12} & u_{13} & u_{14} \\ 0 & u_{22} & u_{23} & u_{24} \\ 0 & 0 & u_{33} & u_{34} \\ 0 & 0 & 0 & u_{44}\end{matrix}\right] = \left[\begin{matrix} u_{11} & 0 & 0 & 0 \\ 0 & u_{22} & 0 & 0 \\ 0 & 0 & u_{33} & 0 \\ 0 & 0 & 0 & u_{44}\end{matrix}\right] = D(对角矩阵)

那么我们再利用性质(3)a.来证明对角矩阵的行列式就是对角线元素相乘

u110000u220000u330000u44=u11u22u33u441000010000100001\begin{vmatrix} u_{11} & 0 & 0 & 0 \\ 0 & u_{22} & 0 & 0 \\ 0 & 0 & u_{33} & 0 \\ 0 & 0 & 0 & u_{44}\end{vmatrix} =u_{11} u_{22} u_{33}u_{44}\begin{vmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{vmatrix}

(8)det(A)=0det(A) = 0,则矩阵AA为奇异矩阵。相反,若det(A)=0det(A) \not= 0,则矩阵AA可逆。

因为如果A可逆,化简后能得到矩阵各列都含非0主元,得到三角矩阵,再利用性质(7)得到其行列式。

(9)det(AB)=det(A)det(B)det(AB) = det(A)det(B)

这意味着A1A=Idet(A1)det(A)=det(I)=1det(A1)=1det(A)A^{-1}A = I \Rightarrow det(A^{-1})det(A) = det(I) = 1 \Rightarrow det(A^{-1}) = \frac{1}{det(A)},这也可以作为本性质的证明,也可以用对角阵AABB,但是我们必须一步步进行消元,整个证明过程需要是非耐心,最终证明该性质对任意矩阵成立。

同时本性质还能推出

det(A2)=det(A)det(A)=det(A)2det(A^2) = det(A)det(A)=det(A)^2

这说明如果矩阵进行平方,那么它的行列式也会平方。

此外,本性质还能推出

det(2A)=2ndet(A)det(2A) = 2^ndet(A)

因为对一个n×nn×n矩阵,将矩阵翻倍意味着各列向量都翻倍,一共翻倍nn次,因此行列式变成了2n2^n倍。

(10)det(AT)=det(A)det(A^T) = det(A)

证明:

根据A=LUA = LU,有

det(A)=det(LU)=det(L)det(U)det(A) = det(LU)=det(L)det(U)

det(AT)=det((LU)T)=det(UTLT)=det(UT)det(LT)det(A^T) = det((LU)^T) = det(U^TL^T)= det(U^T)det(L^T)

由于LLUU都是三角矩阵,因此它们的行列式都是对角线的乘积,因此

det(L)=det(LT)det(U)=det(UT)det(L) = det(L^T) \quad det(U) = det(U^T)

所以最后我们得出

det(AT)=det(A)det(A^T) = det(A)

行列式的计算

对于行列式的计算,我们先来推导二维行列式的求解过程。

abcd=a0cd+0bcd=a0c0+a00d+0bc0+0b0d=a00d+0bc0=adbc\begin{vmatrix} a & b \\ c & d\end{vmatrix} = \begin{vmatrix} a & 0 \\ c & d\end{vmatrix}+\begin{vmatrix} 0 & b \\ c & d\end{vmatrix} = \begin{vmatrix} a & 0 \\ c & 0\end{vmatrix}+\begin{vmatrix} a & 0 \\ 0 & d\end{vmatrix}+\begin{vmatrix} 0 & b \\ c & 0\end{vmatrix}+\begin{vmatrix} 0 & b \\ 0 & d\end{vmatrix} =\begin{vmatrix} a & 0 \\ 0 & d\end{vmatrix} + \begin{vmatrix} 0 & b \\ c & 0\end{vmatrix} = ad-bc

观察二维行列式的求解过程,我们发现,行列式的求解取决于那些分解后非零行列式的和,即各行各列均有非零元素的行列式。因此我们按照这个规律,继续推导三维行列式,我们这次只写出非00项,有

a11a12a13a21a22a23a31a32a33=a11000a22000a33+a110000a230a320+0a120a210000a33+0a12000a23a3100\begin{vmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{vmatrix} = \begin{vmatrix} a_{11} & 0 & 0 \\ 0 & a_{22} & 0 \\ 0 & 0 & a_{33} \end{vmatrix} + \begin{vmatrix} a_{11} & 0 & 0 \\ 0 & 0 & a_{23} \\ 0 & a_{32} & 0 \end{vmatrix} + \begin{vmatrix} 0 & a_{12} & 0 \\ a_{21} & 0 & 0 \\ 0 & 0 & a_{33} \end{vmatrix}+\begin{vmatrix} 0 & a_{12} & 0 \\ 0 & 0 & a_{23} \\ a_{31} & 0 & 0 \end{vmatrix}

+00a13a21000a320+00a130a220a3100=a11a22a33a11a23a32a12a21a33+a12a23a31+a13a21a32a13a22a31+ \begin{vmatrix} 0 & 0 & a_{13} \\ a_{21} & 0 & 0 \\ 0 & a_{32} & 0 \end{vmatrix} + \begin{vmatrix} 0 & 0 & a_{13} \\ 0 & a_{22} & 0 \\ a_{31} & 0 & 0 \end{vmatrix} = a_{11}a_{22}a_{33} - a_{11}a_{23}a_{32} -a_{12}a_{21}a_{33} + a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31}

可以发现规律,因为各行各列均需有非零元素,所以对于n×nn×n的矩阵,其行列式分解后的非零项有n!n!个。

同理,我们根据nn阶行列式可以分解为n!n!个非零行列式来推到出高维行列式的一般求解公式,即

A=n!±a1αa2βa3γ...anψ(α,β,γ,...,ψ1n)=Pnn|A| = \sum_{n!}\pm a_{1\alpha}a_{2\beta}a_{3\gamma}...a_{n\psi}(\alpha,\beta,\gamma,...,\psi为1到n的某种排列) = P^n_{n}

例 求A=0011011011001001|A| = \begin{vmatrix} 0 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{vmatrix}

如果检查该行列式分解出的24项会发现其中有22项为00,剩下的非零行列式为

0001001001001000=10010010010000001=1\begin{vmatrix} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{vmatrix} = 1和\begin{vmatrix} 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{vmatrix} = -1

因此A=11=0|A| = 1-1 = 0

代数余子式(Cofactors)

接下来引入代数余子式的概念,它的作用是把nn阶行列式化简为n1n-1阶行列式。

先来看3×33×3行列式的情况,上一节我们得到了

a11a12a13a21a22a23a31a32a33=a11a22a33a11a23a32a12a21a33+a12a23a31+a13a21a32a13a22a31\begin{vmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{vmatrix} = a_{11}a_{22}a_{33} - a_{11}a_{23}a_{32} -a_{12}a_{21}a_{33} + a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31}

那么我们以行列式第一行的三个元素来合并同类项,可以得到

a11a22a33a11a23a32a12a21a33+a12a23a31+a13a21a32a13a22a31=a11(a22a33a23a32)+a12(a21a33+a23a31)+a13(a21a32a22a31)a_{11}a_{22}a_{33} - a_{11}a_{23}a_{32} -a_{12}a_{21}a_{33} + a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31} \\ = a_{11}(a_{22}a_{33} - a_{23}a_{32}) + a_{12}(-a_{21}a_{33} + a_{23}a_{31}) + a_{13}(a_{21}a_{32}-a_{22}a_{31})

合并同类项后,我们又可以把新的三个项看作是三个矩阵的行列式

a11(a22a33a23a32)+a12(a21a33+a23a31)+a13(a21a32a22a31)=a11000a22a230a32a330a120a210a23a310a33+00a13a21a220a31a320a_{11}(a_{22}a_{33} - a_{23}a_{32}) + a_{12}(-a_{21}a_{33} + a_{23}a_{31}) + a_{13}(a_{21}a_{32}-a_{22}a_{31}) \\= \begin{vmatrix} a_{11} & 0 & 0 \\ 0 & a_{22} & a_{23} \\ 0 & a_{32} & a_{33} \end{vmatrix} - \begin{vmatrix} 0 & a_{12} & 0 \\ a_{21} & 0 & a_{23} \\ a_{31} & 0 & a_{33} \end{vmatrix} + \begin{vmatrix} 0 & 0 & a_{13} \\ a_{21} & a_{22} & 0 \\ a_{31} & a_{32} & 0 \end{vmatrix}

由此我们定义aija_{ij}的代数余子式:将原行列式的第ii行与第jj列抹去后得到的n1n-1阶行列式记为CijC_{ij}i+ji+j为偶数时,该项前的符号为++i+ji+j为奇数时,该项前的符号为-,规律如下

+++++\begin{vmatrix} + & - & + \\ - & + & - \\ + & - & + \end{vmatrix}

a11a_{11}的代数余子式为

C11=(1)1+1a22a23a32a33C_{11} = (-1)^{1+1}\begin{vmatrix} a_{22} & a_{23} \\ a_{32} & a_{33} \end{vmatrix}

因此,将矩阵AA沿第一行展开的公式为

A=a11C11+a12C12+...+a1nC1n|A| = a_{11}C_{11} + a_{12}C_{12}+...+a_{1n}C_{1n}

A1=1A2=1111=0|A_1| = 1 \quad |A_2| = \begin{vmatrix} 1 & 1 \\ 1 & 1 \end{vmatrix}= 0

A3=110111011=100011011+010101001+000110010=01+0=1|A_3| = \begin{vmatrix} 1 & 1 & 0 \\ 1 & 1 & 1 \\ 0 & 1 & 1 \end{vmatrix}= \begin{vmatrix} 1 & 0 & 0 \\ 0 & 1 & 1 \\ 0 & 1 & 1 \end{vmatrix} + \begin{vmatrix} 0 & 1 & 0 \\ 1 & 0 & 1 \\ 0 & 0 & 1 \end{vmatrix} + \begin{vmatrix} 0 & 0 & 0 \\ 1 & 1 & 0 \\ 0 & 1 & 0 \end{vmatrix} = 0-1+0 = -1

A4|A_4|A5|A_5|A6|A_6|A7|A_7|

A4=1100111001110011=1000011001110011+0100101000110011=1A3+(1)A2=0|A_4| = \begin{vmatrix} 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \end{vmatrix} = \begin{vmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \end{vmatrix} + \begin{vmatrix} 0 & 1 & 0 & 0 \\ 1 & 0 & 1 & 0 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 1 \end{vmatrix} = 1·|A_3| + (-1)·|A_2| = 0

发现规律:An=An1An2|A_n| = |A_{n-1}| - |A_{n-2}|,因此可知

A5=0A6=1A7=1|A_5| = 0 \quad |A_6| = 1 \quad |A_7| = 1

会发现,随着维度增加,行列式的值呈现1011011,0,-1,-1,0,1,以这样66个值循环,因此周期为66

小节

至此,我们掌握了三种方法来求一个方阵的行列式:

  • 消元法(LULU分解)将矩阵AA化为UUA|A|就是主元的乘积(最简单)
  • 使用代数余子式按某一行展开(稍复杂)
  • 按行列式公式完全展开计算,需要求n!n!项之积(很复杂)

行列式的应用

逆矩阵公式

我们已经接触到很多逆矩阵了,但是一直没有给出逆矩阵的公式,你可以通过Gauss-Jordan消元法来求矩阵的逆,不过现在学习了行列式,可以直接求逆矩阵。

我们已经知道二阶逆矩阵的公式为:

[abcd]1=1adbc[dbca]\left[\begin{matrix} a & b \\ c & d \end{matrix}\right] ^{-1} = \frac{1}{ad-bc}\left[\begin{matrix} d & -b \\ -c & a \end{matrix}\right]

那么我们能否通过二阶公式来推导至更高维度?

通过观察公式我们发现:

  • 1adbc\frac{1}{ad-bc}实际就是矩阵AA的行列式的倒数
  • 后面的矩阵中的dd实际上是矩阵AA中的aa的代数余子式,同理,b-b实际上就是cc的代数余子式

因此可以得出,逆矩阵公式为

A1=1det(A)CTA^{-1} = \frac{1}{det(A)}C^T

等式右侧矩阵外的因子,其分母是矩阵的行列式,而矩阵为代数余子式矩阵(Cofactor Matrix)CC的转置,称为伴随矩阵(Adjoint Matrix)。因此矩阵AA的逆就是矩阵行列式的倒数与其伴随矩阵的乘积。

那么为什么是这个公式呢?我们来验证一下,假设等式成立,首先将等式两边都乘上矩阵AA得到

AA1=A1det(A)CTACT=det(A)IAA^{-1} = A\frac{1}{det(A)}C^T \Rightarrow AC^T = det(A)I

因此,若逆矩阵公式成立其实就是判断ACTAC^T是否与det(A)Idet(A)I相等。

ACT=[a11a1nan1ann][C11Cn1C1nCnn]AC^T = \left[\begin{matrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \end{matrix}\right]\left[\begin{matrix} C_{11} & \cdots & C_{n1} \\ \vdots & \ddots & \vdots \\ C_{1n} & \cdots & C_{nn} \end{matrix}\right]

根据矩阵相乘,我们观察发现,矩阵ACTAC^T的第一行第一列元素等于矩阵AA第一行和矩阵CTC^T第一列进行点积,计算可得

j=1na1jC1j=det(A)\sum_{j=1}^{n}a_{1j}C_{1j} = det(A)

也就是说,它们的点积其实就是矩阵AA的行列式计算公式,而ACTAC^T对角线上的所有元素都是如此,因此我们可以得到,它们相乘后的矩阵,其对角线处全部都是行列式。那么非对角元素呢?以第二行第一列为例,相乘我们发现,各个代数余子式的形式不变,但是与代数余子式相乘的变为了矩阵AA第二行第jj列元素。因此这个形式相当于用矩阵AA第二行的元素替代第一行的元素得到的矩阵,前两行的元素相同,因此按照行列式性质(4),其值为00

j=1na2jC1j=a21a22a2na21a22a2na31a32a3nan1an2ann=0\sum_{j=1}^{n}a_{2j}C_{1j} = \begin{vmatrix} a_{21} & a_{22} & \cdots & \cdots & a_{2n} \\ a_{21} & a_{22} & \cdots & \cdots & a_{2n} \\ a_{31} & a_{32} & \ddots & & a_{3n} \\ \vdots & & & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & \cdots & a_{nn} \end{vmatrix}= 0

因此最后我们得到

ACT=[a11a1nan1ann][C11Cn1C1nCnn]=[det(A)000det(A)000det(A)]I=det(A)IAC^T = \left[\begin{matrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \end{matrix}\right]\left[\begin{matrix} C_{11} & \cdots & C_{n1} \\ \vdots & \ddots & \vdots \\ C_{1n} & \cdots & C_{nn} \end{matrix}\right] = \left[\begin{matrix} det(A) & 0 & \cdots & 0 \\ 0 & det(A) & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & det(A) \end{matrix}\right]I= det(A)I

克莱姆法则(Cramer's Rule)

对于可逆矩阵AA,方程Ax=bAx=b必有解x=A1bx=A^{-1}b,将逆矩阵的公式代入,那么

x=A1b=1det(A)CTbx=A^{-1}b=\frac{1}{det(A)}C^Tb

克莱姆法则(Cramer's Rule)则是从另一个角度来看待这个公式,即xx的分量xjx_jxj=det(Bj)det(A)x_j = \frac{det(B_j)}{det(A)}

其中,矩阵BjB_j为用向量bb替换矩阵AA的第jj列所得到的新矩阵。例如

B1=[b1a12a1nb2a22a2nb3a32a3nbnan2ann]B_1 = \left[\begin{matrix} b_1 & a_{12} & \cdots & \cdots & a_{1n} \\ b_2 & a_{22} & \cdots & \cdots & a_{2n}\\ b_3 & a_{32} & \ddots & & a_{3n} \\ \vdots & & & \ddots & \vdots \\ b_n & a_{n2} & \cdots & \cdots & a_{nn} \end{matrix}\right]

矩阵BjB_j的行列式的值从第j列用代数余子式进行展开计算,正好是伴随矩阵CTC^T的第j行,与向量bb点积的结果。

但是相较于高斯消元法,克莱姆法则计算方程的解的效率较低,它仅仅只是提供了一个代数表达式,让人们能代数运算而不是写算法。

行列式的几何意义

在二维中,行列式的几何意义其实就是矩阵所对应的线性变换所改变由空间中两基向量构成的矩形的面积的比例,对应到三维就是对应空间中三个基向量对应的平行六面体的体积的比例。

  • 例:我们在二维空间中以一组基向量x=[10],y=[01]x=\left[\begin{matrix} 1 \\ 0 \end{matrix}\right],y = \left[\begin{matrix} 0 \\ 1 \end{matrix}\right]为例,两个基向量构成了一个单位矩形面积为11,假设现在要进行线性变换,变换矩阵为[3202]\left[\begin{matrix} 3 & 2 \\ 0 & 2 \end{matrix}\right],即变换后xx轴单位向量由x=[10]x=\left[\begin{matrix} 1 \\ 0 \end{matrix}\right]变为[30]\left[\begin{matrix} 3 \\ 0 \end{matrix}\right],对应地,y轴单位向量由y=[01]y = \left[\begin{matrix} 0 \\ 1 \end{matrix}\right]变为[22]\left[\begin{matrix} 2 \\ 2 \end{matrix}\right],变换后我们发现,矩形面积变成了66,是原单位矩形面积的66倍,其值其实就是行列式3202=6\begin{vmatrix} 3 & 2 \\ 0 & 2 \end{vmatrix} = 6

  • 当矩阵的行列式为00时,这意味着线性变换后,原空间被压缩成了一条线或一个点(二维情况下),即原空间的维度降低。这也解释了为何矩阵列向量线性相关时,经过它的线性变换后,原空间发生维度降低,其实就是因为它是奇异矩阵,它的行列式为0。

  • 当矩阵的行列式为负数时,表示矩阵的线性变换将原空间的定向发生了改变,如平面翻转。更为直观的就是变换后坐标轴的相对位置会发生变换。在三维中,一般情况下我们使用右手定则来构建坐标系,若此时现线性变换的矩阵行列式为负数时,线性变换后新的坐标系就会变成满足左手定则。但是行列式的绝对值大小仍然决定其体积的缩放比例。