行列式
三条基本性质
两个向量可以描述平行四边形的面积,三个向量可以描述平行六面体的体积。再往高维推广,\(n\)个向量可以描述一个“\(n\)维平行多面体”的“体积”。我们将会看到,这样的“体积”拥有一些性质,我们能从这些性质中推出体积的表达式。对于\(n\)个\(n\)维向量,设它的体积为函数\(D\left(a_{1}, \cdots,a_{n}\right)\)。
第一,“体积”要满足线性性:\(D\left(a_{1}, \cdots, c a_{i}+c^{\prime} a_{i}^{\prime}, \cdots, a_{n}\right)=c D\left(a_{1}, \cdots, a_{i}, \ldots, a_{n}\right)+c^{\prime} D\left(a_{1}, \cdots, a_{i}^{\prime}, \cdots, a_{n}\right)\)。从平行四边形来理解,延长某条边对应着面积也要增大相应的倍数。在“同底”的基础上加上另一个方向的边面积也为增加相应的面积。(\(c\)可以取0)
第二,“体积”要满足列加法不变性:\(D\left(a_{1}, \cdots, a_{i}+ca_{j}, \cdots,a_j,\cdots, a_{n}\right)=D\left(a_{1}, \cdots, a_{i}, \cdots, a_j,\cdots,a_{n}\right)\)。从平行四边形来理解,将某条边的端点沿着另一条边的方向平移,平行四边形是同底等高的,面积不变。
第三,单位矩阵的列向量构成的体积为1:\(D\left(e_{1}, \cdots, e_{i}, \cdots,e_{n}\right)=1\)
我们将会看到,这样的函数\(D\)存在且唯一。这\(n\)个\(n\)维向量构成矩阵\(A\),我们就称\(A\)的行列式为\(D(a_1,\cdots,a_n)\),记作\(\det(A)\)。而要证明存在性与唯一性,需要这三条性质推出的更多性质。
由三条基本性质推出的其他性质
如果交换两个向量的位置,那么行列式要加上负号。只看两项,\(D(a_i,a_j)=D(a_i,a_i+a_j)=D(-a_j,a_i+a_j)=\)\(D(-a_j,a_i)=\)\(-D(a_j,a_i)\)。
如果存在\(a_i=0\),那么\(D=0\)。因为\(0\)可以看作\(0 \cdot a_i\),将系数提出即可。如果存在\(a_i=a_j\),那么\(D=0\),因为只需做列加法就会得到一个零向量。进一步,如果某一列是其他列的线性组合,那么\(D=0\),因为可以把这个向量用其它向量的线性表示来拆开,拆出来的每一项都有相同向量,因此都为0。进一步得到,只要矩阵不是满秩的就有\(D=0\)。如果把某些列的线性组合加到某一列上,那么\(D\)不变。
对角矩阵的行列式等于对角线上数的乘积。依据是线性性(提出系数)和性质三。进一步,如果矩阵可逆,那么任何矩阵都能消成三角矩阵,再消成对角矩阵。而我们发现我们已经知道所有初等列变换对行列式的影响,因此对于任意矩阵,我们只需要竖着高斯消元,就可以消成对角矩阵,也就在这过程中求出了行列式的值。根据高斯消元,当且仅当矩阵满秩时对角线上的元素才是全部非0的。而如果矩阵不是满秩的,行列式一定为0。(方阵可不可逆只需要看行列式等不等于零。)
于是,我们已经可以计算任何矩阵的行列式了!
我们特别关注方阵\(A\)乘以列初等变换矩阵\(E\)后\(AE\)的行列式的值。当\(E\)表示乘以某个常数\(c\)时,\(\det(E)=c\),同时有\(\det(AE)=c\det(A)\);当\(E\)表示交换两列时,\(\det(E)=-1\),同时有\(\det(AE)=-\det(A)\);当\(E\)表示列相加时,\(\det(E)=1\),同时有\(\det(AE)=\det(A)\)。综上,\(\det(AE)=\det(A)\det(E)\)恒成立。
由Gauss-Jordan可知,任何一个可逆矩阵都可以表示为一系列初等矩阵的乘积。所以对于\(\det(B)\neq 0\),有\(\det(AB)=\det(AE_1E_2\cdots E_n)\),归纳地得到\(\det(AB)=\det(A)\det(E_1)\det(E_2)\cdots \det(E_n)\)。而我们也可以归纳地得到\(\det(B)=\det(E_1)\det(E_2)\cdots \det(E_n)\),因此有\(\det(AB)=\det(A)\det(B)\)。而当\(\det(B)=0\)时,\(\det(AB)=0\)也成立,因为我们证明过\(\text{rank}(AB) \leq \min\{\text{rank}(A),\text{rank}(B)\}\)。综上,对于任何矩阵都有\(\det(AB)=\det(A)\det(B)\)。
再来证\(\det(A)=\det(A^{\top})\)。当\(A\)不可逆时显然成立。当\(A\)可逆时,把它写作初等矩阵地乘积\(A=E_1E_2\cdots E_n\),于是\(A^{\top}=E_n^{\top}\cdots E_2^{\top}E_1^{\top}\)。要证\(\det(E_1)\det(E_2)\cdots \det(E_n)=\det(E_n^{\top})\cdots\det(E_2^{\top}) \det(E_1^{\top})\),只需证\(\det(E)=\det(E^{\top})\)。当\(E\)表示乘以某个常数时成立,当\(E\)表示交换两列时成立,当\(E\)表示列相加时依然成立。这条性质告诉我们,如果我们对矩阵做行变换,对行列式产生的影响也满足列变换的那套规则——我们可以先把矩阵取转置,这不改变行列式,然后做相应的列变换,最后再把矩阵转置回来。
The Big Formula
有了这些性质,我们来看\(D\)的表达式必须具有怎样的形式。
每个向量都可以写成\(a_i=\sum\limits_{k \in [n]}a_{ki}e_k\)的形式(坐标正交分解),再根据\(D\)的线性性,我们把它用如上方式全部展开得到许多\(a_{p_11}a_{p_22}\cdots a_{p_nn}D(e_{p_1},e_{p_2},\cdots,e_{p_n})\)的和,其中\(p_i\)对应着1到n中的一个数,在第\(i\)个向量中分解出\(e_{p_i}\)就必须提出\(a_{p_ii}\)作为乘在前面的系数。总共会有\(n^n\)个项。而我们知道如果存在\(p_i=p_j\),那么势必有\(D=0\)。在所有这\(n^n\)个项中我们只需要考虑那\(n!\)个\(D \neq 0\)的项,它们刚好对应1到n的全排列。而对于这样的\(D\)只可能是\(-1\)或\(1\),这取决于把\(D\)换回顺序所需要的交换次数。假设有函数\(\tau(p)\)表示需要交换的次数,那么就有:
$\det(A)=\sum\limits_{\sigma \in \operatorname{Perm}(n)}(-1)^{\tau(\sigma)} a_{\sigma(1) 1}a_{\sigma(2) 2} \cdots a_{\sigma(n) n} $
我们可以把\(\tau(p)\)定义为\(p\)中逆序对的个数:逆序对的个数一定与任何一个“交换次数”有相同的奇偶性。考虑交换一个逆序对时,会对逆序对总数的变化产生贡献的一定是逆序对对应的区间内部的那些介于两个端点之内的值的个数,每个值原先产生2个逆序对,现在产生0个逆序对。如果交换的不是逆序对,依然只有端点内的值为影响,每个值原来不产生逆序对,现在产生2个逆序对。而区间端点本身的交换会对总数有1的影响。综上,无论做什么样的交换,只会以奇数的方式改变逆序对数量。假设逆序对总数为奇数,那么不可能有偶数个奇数的和为奇数,因此交换次数必须是奇数;假设逆序对总数为偶数,那么不可能有奇数个奇数的和为偶数,因此交换次数必须是偶数。
这就是行列式定义——The Big Formula!
我们返回去验证,这样定义的行列式具有上述讨论的所有性质。而这只要求我们验证它有三条基本的性质。我们只需要把等式两边代入Big Formula,并判断它们是否相等就好了。
我们可以这样理解The Big Formula。行列式由\(n!\)项相加得到,每一项对应着一个排列。我们在每一列一定要取一个,而取哪一个就取决于排列的这一位是几。最后这些元素相乘,还要乘上这个排列的逆序对个数。
余子式,拉普拉斯展开
定义方阵\(A\)的余子式\(C_{i j}=(-1)^{i+j} \operatorname{det}\left(M_{i j}\right)\),其中\(M_{ij}\)表示矩阵\(A\)中去掉第\(i\)行元素和第\(j\)列元素后留下的新矩阵。我们之所以关注到这种排除当前行列的结构,是因为行列式计算时的每一项如果选了某个元素,那么就一定不会再选到同一行同一列的元素了。我们将会看到余子式的出现对问题的简化。
对于\(n>1\)的矩阵,成立\(\operatorname{det}(A)=a_{11} C_{11}+a_{21} C_{21}+\cdots+a_{n 1} C_{n 1}\),称为行列式的拉普拉斯展开。对于\(a_{i1}C_{i1}\)这一项,它对应着Big Formula里所有\(\sigma(1) = i\)的排列,因此在\(\det(M_{i1})\)的基础上,还需要加上\(i\)放在第一个而产生的\(i-1\)个逆序对,因此令\(\det(M_{i1})\)乘上\((-1)^{i-1}\)得到的恰好与\(C_{i1}=(-1)^{i+1}\det(M_{i1})\)相符。
而赋予了第一列特殊性是没有道理的,行列式的每一列都应当具有相同的地位。事实上,对于所有的\(j\),都有\(\operatorname{det}(A)=a_{1 j} C_{1 j}+a_{2 j} C_{2 j}+\cdots+a_{n j} C_{n j}\)。对于\(a_{ij}C_{ij}\)这一项,相当于选定了\(\sigma(j)=i\)。考虑交换次数,把它从第\(j\)列“挪到”第1列正好做\(j-1\)次交换,然后贡献\(i-1\)个逆序对,因此要给\(\det(M_{ij})\)乘上\((-1)^{j+i-2}\),正好与\(C_{ij}=(-1)^{i+j}\det(M_{ij})\)相符。
更一般地,我们还可以选取某一行做拉普拉斯展开。我们证明过转置不改变行列式,那么可以想象\(C_{ij}=C'_{ji}\),于是\(\operatorname{det}(A^\top)=a'_{1 j} C'_{1 j}+a'_{2 j} C'_{2 j}+\cdots+a'_{n j} C'_{n j}\)\(=a_{j1} C_{j1}+a_{j2} C_{j2}+\cdots+a_{jn} C_{jn}=\det(A)\)
Cramer法则
行列式可以用于计算线性方程组。虽然实际应用中没人会用这么繁琐的方法真的来解线性方程组,但我们要说明的是我们是能在行列式与线性方程组之间建立起直接关系的。更重要的是,高斯消元仅仅给出了一个求线性方程组的“算法”,而我们将会看到,基于行列式的“Cramer法则”却精确地给出了方程组的解的表达式。
对于\(Ax=b\),我们可以写出\(\begin{aligned} A\left[\begin{array}{ccccc} x_{1} & 0 & 0 & \cdots & 0 \\ x_{2} & 1 & 0 & \cdots & 0 \\ x_{3} & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ x_{n} & 0 & 0 & \cdots & 1 \end{array}\right] &=\left[\begin{array}{lllll} A \boldsymbol{x} & A \boldsymbol{e}_{2} & A \boldsymbol{e}_{3} & \cdots & A \boldsymbol{e}_{n} \end{array}\right]=\left[\begin{array}{ccccc} b_{1} & a_{12} & a_{13} & \cdots & a_{1 n} \\ b_{2} & a_{22} & a_{23} & \cdots & a_{2 n} \\ b_{3} & a_{32} & a_{33} & \cdots & a_{3 n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ b_{n} & a_{n 2} & a_{n 3} & \cdots & a_{n n} \end{array}\right] \end{aligned}\),设右边的矩阵为\(B_1\),而乘在\(A\)右边是三角矩阵,其行列式为\(x_1\)。根据行列式乘法的运算性质,我们得到\(\det(A)x_1=\det(B_1)\)。如果\(A\)可逆,那么一定有\(x_1=\dfrac{\det(B_1)}{\det(A)}\).
类似地,\(A\left[\begin{array}{ccccc} 1 & \cdots & x_{1} & \cdots & 0 \\ 0 & \cdots & x_{2} & \cdots & 0 \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ 0 & \cdots & x_{n} & \cdots & 1 \end{array}\right]= \begin{bmatrix}Ae_1 \cdots Ax\cdots Ae_n\end{bmatrix}=\left[\begin{array}{ccccc} a_{11} & \cdots & b_{1} & \cdots & a_{1 n} \\ a_{21} & \cdots & b_{2} & \cdots & a_{2 n} \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ a_{n 1} & \cdots & b_{n} & \cdots & a_{n n} \end{array}\right]\),设右边的矩阵为\(B_i\),那么\(x_i=\dfrac{\det(B_i)}{\det(A)}\)。
所以,Cramer法则就是说,如果依次把\(A\)矩阵中第\(i\)列用\(b\)替换,那么就可以写出线性方程组的解\(x_i=\dfrac{\det(B_i)}{\det(A)}\)。
Cramer法则也可以用于求逆。根据\(AA^{-1}=I\),求\(A^{-1}\)等价于依次求解\(Ax_i=e_i\)。依次把\(A\)的第\(j\)列替换成\(e_i\)构成\(A'\),那么就有\(x_i(j)=\dfrac{\det(A')}{\det(A)}\)。把\(\det(A')\)用第\(j\)列拉普拉斯展开就能发现,\(\det(A')=C_{ij}\)。于是可得,\(x_i(j)=\dfrac{C_{ij}}{\det(A)}\)。整理一下,可以写成\(A^{-1}(i,j)=\dfrac{C_{ji}}{\det(A)}\)
伴随矩阵
定义\(A^{*}=\left[\begin{array}{cccc} C_{11} & C_{21} & \cdots & C_{n 1} \\ C_{12} & C_{22} & \cdots & C_{n 2} \\ \vdots & \vdots & \ddots & \vdots \\ C_{1 n} & C_{2 n} & \cdots & C_{n n} \end{array}\right]\)(注意余子式下标与矩阵下标颠倒)
可以验证:\(AA^*=\det(A)I\)
\(AA^*(i,j)=\sum\limits_{k \in [n]}A(i,k)A^*(k,j)=\sum\limits_{k \in [n]}a_{ik}C_{jk}\)。
于是,\(AA^*(i,i)=\sum\limits_{k \in [n]}a_{ik}C_{ik}=\det(A)\)。
对于\(i \neq j\),\(AA^*(i,j)=\sum\limits_{k \in [n]}a_{ik}C_{jk}\)。我们把\(A\)的第\(j\)行用第\(i\)行覆盖,构成一个新的矩阵\(A'\)。根据Cramer法则,\(\det(A')=\sum\limits_{k \in [n]}a'_{jk}C'_{jk}=\sum\limits_{k \in [n]}a_{ik}C_{jk}\)。而由于\(A'\)有两个相同的行,因此\(\det(A')=0\)。综上,\(AA^*(i,j)=0\)。得证。
从另一个角度看,如果\(A\)可逆,那么可以看出\(A^{-1}=\dfrac{A^*}{\det(A)}\)

浙公网安备 33010602011771号