Logo

行列式简介

1. 计算 3×3 ~3\times 3~矩阵的行列式

我们在 2.2 ~2.2~节矩阵的逆中讲解二阶矩阵的可逆性判定时介绍过二阶行列式。二阶矩阵 A=[abcd] ~\mathbf{A}=\begin{bmatrix}\textcolor{#2196f3}{a} & \textcolor{#ff8200}{b} \\ \textcolor{#ff8200}{c} & \textcolor{#2196f3}{d}\end{bmatrix}~的行列式可以表示为:detA=adbcdet\mathbf{A}=\textcolor{#2196f3}{ad}-\textcolor{#ff8200}{bc}。下面我们来推导如何求解 3×3 ~3\times 3~矩阵 A3×3=[aij] ~\mathbf{A}_{3\times 3}=\begin{bmatrix}a_{ij}\end{bmatrix}~的行列式,为了确保我们能够顺利地进行初等行变换,我们令 a110 ~a_{11}\neq 0~,请观察下面的推导过程:

开通会员解锁全部动画

经过上面的推导,可得三阶矩阵  A3×3 ~\mathbf{A}_{3\times 3}~行列式为:
Δ=a11a22a33+a12a23a31+a13a21a32a11a23a32a12a21a33a13a22a31(1)\textcolor{#f22222}{\Delta} = \textcolor{#2196f3}{a_{11}a_{22}a_{33}} + \textcolor{#2196f3}{a_{12}a_{23}a_{31}} + \textcolor{#2196f3}{a_{13}a_{21}a_{32}} -\textcolor{#ff8200}{a_{11}a_{23}a_{32}} - \textcolor{#ff8200}{a_{12}a_{21}a_{33}} - \textcolor{#ff8200}{a_{13}a_{22}a_{31}} \tag{1}
对这个行列式进一步推导,可得:
Δ=a11(a22a33a23a32)a12(a21a33a23a31)+a13(a21a32a22a31)=a11det[a22a23a32a33]a12det[a21a23a31a33]+a13det[a21a22a31a32]=a11detA11a12detA12+a13A13\begin{align*}\textcolor{#f22222}{\Delta} &= a_{11}(\textcolor{#2196f3}{a_{22}a_{33}}-\textcolor{#ff8200}{a_{23}a_{32}})- a_{12}(\textcolor{#2196f3}{a_{21}a_{33}}-\textcolor{#ff8200}{a_{23}a_{31}})+ a_{13}(\textcolor{#2196f3}{a_{21}a_{32}}-\textcolor{#ff8200}{a_{22}a_{31}})\\[2ex] &= a_{11} \det\begin{bmatrix} \textcolor{#2196f3}{a_{22}} & \textcolor{#ff8200}{a_{23}} \\ \textcolor{#ff8200}{a_{32}} & \textcolor{#2196f3}{a_{33}} \end{bmatrix} - \textcolor{#ff8200}{a_{12}} \det\begin{bmatrix} \textcolor{#2196f3}{a_{21}} & \textcolor{#ff8200}{a_{23}} \\ \textcolor{#ff8200}{a_{31}} & \textcolor{#2196f3}{a_{33}} \end{bmatrix} + \textcolor{#ff8200}{a_{13}} \det\begin{bmatrix} \textcolor{#2196f3}{a_{21}} & \textcolor{#ff8200}{a_{22}} \\ \textcolor{#ff8200}{a_{31}} & \textcolor{#2196f3}{a_{32}} \end{bmatrix}\\[4ex] &= a_{11} \cdot \det\mathbf{A}_{11} - a_{12}\cdot \det\mathbf{A}_{12} + a_{13}\cdot \mathbf{A}_{13} \end{align*}
其中, A11~\mathbf{A}_{11}A12 \mathbf{A}_{12}~ A13 ~\mathbf{A}_{13}~是由 A ~\mathbf{A}~删去第一行和对应的列而得到的,请观察下面的过程:

开通会员解锁全部动画

2. n n~阶矩阵的行列式递归定义

由上面的推导可知,三阶矩阵的行列式可以通过二阶矩阵的行列式递推得到。这个递推关系可推广到一般情况,即 n ~n~阶矩阵的行列式可以由 n1 ~n-1~阶矩阵的行列式递推得到。以下是行列式的一种递归定义:

根据定义,我们通过递归展开法计算三阶矩阵的行列式:

开通会员解锁全部动画

方阵 A ~\mathbf{A}~的行列式通常用一对竖线来表示,例如二阶矩阵的行列式可表示为: detA=abcd=adbc ~ \det \mathbf{A} = \left| \begin{array}{cc} a & b \\ c & d \end{array} \right| = ad - bc~

3. 行列式的代数余子式展开

在前面的描述中,我们令 Aij ~\mathbf{A}_{ij}~表示删除矩阵 A ~\mathbf{A}~的第 i ~i~行和第 j ~j~列后得到的子矩阵, detAij ~\det \mathbf{A}_{ij}~则表示该子矩阵的行列式。矩阵 A ~\mathbf{A}~的第 (i,j) ~(i,j)~元素的代数余子式 (cofactor) ~(\mathbf{cofactor})~,记作 Cij ~C_{ij}~,定义如下:
Cij=(1)i+jdetAijC_{ij} = (-1)^{i+j} \det \mathbf{A}_{ij}
那么对于 (2) ~(2)~,我们可以用代数余子式来表示:
detA=a11C11+a12C12++a1nC1n(3)\det \mathbf{A} = a_{11}C_{11} + a_{12}C_{12} + \cdots + a_{1n}C_{1n} \tag{3}
公式 (3) ~(3)~称为 A ~\mathbf{A}~的第一行的代数余子式展开式 (cofactor expansion across the first row) ~(\mathbf{cofactor~expansion~across~the~first~row})~。 对于式子 (1) ~(1)~,我们可以从中提取不同的因子得到其它形式的结果,例如提取矩阵中第二行的元素可得:
Δ=a21(a12a33a13a32)a22(a11a33a13a31)+a23(a11a32a12a31)=a21C21+a22C22+a23C23\begin{align*}\textcolor{#f22222}{\Delta} &= a_{21}(\textcolor{#2196f3}{a_{12}a_{33}}-\textcolor{#ff8200}{a_{13}a_{32}})- a_{22}(\textcolor{#2196f3}{a_{11}a_{33}}-\textcolor{#ff8200}{a_{13}a_{31}})+ a_{23}(\textcolor{#2196f3}{a_{11}a_{32}}-\textcolor{#ff8200}{a_{12}a_{31}})\\[2ex] &= a_{21}C_{21} + a_{22}C_{22} + a_{23}C_{23} \end{align*}

这样,我们就可以按照矩阵的第二行来展开计算。根据这个代数性质,我们可以推断从三阶矩阵的任意一行或一列来展开计算行列式,得到的结果是一致的。这个结论不仅适用于三阶矩阵,还可以推广到任意阶数的矩阵,有如下定理(也称为拉普拉斯定理):

矩阵元素 (i,j) ~(i,j)~的代数余子式的正负号只取决于它在矩阵中的位置,请观察下面的示例:

开通会员解锁全部动画

4. 任意行、列展开计算行列式

根据定理 1,我们可以选择矩阵的任意行或列来展开计算行列式。如果选中的行或列中含有大量零元素,那么在展开计算时就可以跳过这些零元素,从而简化计算,请观察下面的示例:

开通会员解锁全部动画

为了减少行列式的计算量,我们可以总是优先选择零元素最多的行或列进行展开。最理想的情况是矩阵呈现为三角矩阵形式(包括上三角矩阵和下三角矩阵),在这种情况下,行列式的值等于对角线元素的乘积,不需要进行复杂的余子式展开。有如下定理:

为了更好地理解这个定理,我们来看一个具体的示例:

开通会员解锁全部动画

5. 行列式代数余子式展开的时间复杂度

对一个 n×n ~n\times n~的矩阵,代数余子式展开法需要递归地处理 n1 ~n-1~阶的子矩阵。对于每个 n×n ~n\times n~的矩阵,我们需要对 n ~n~个元素进行展开,并对每个展开的元素计算 (n1)×(n1) ~(n-1)\times (n-1)~矩阵的行列式。因此,时间复杂度可以表示为:
T(n)=nT(n1)T(n) = n \cdot T(n-1)
通过递推可以得到时间复杂度为 O(n!) ~O(n!)~。也就是说,代数余子式展开法的复杂度随着矩阵阶数的增加呈现阶乘增长。这是一个极高的复杂度,例如对一个 25×25 ~25\times 25~的矩阵,理论运算次数达到 25!=1.55×1025 ~25!=1.55\times 10^{25}~,这在实际应用中是不可能完成的。

代数余子式展开法只适用于小型矩阵,在现代计算机中,通常会使用其他更高效的算法(如LU分解、高斯消元)来求解行列式。