矩阵的决定式
声明:关于术语翻译
因为写博客的目的是为了总结知识,方便笔者自己理解,所以我故意不使用中文教科书上一些常见的、而我觉得翻译得词不达意的术语翻译。如行列式、齐次、秩等概念,一概改成了使用方便理解的、自创的译法。 同时我无意误导别人,所以如果你不喜欢,那就请直接忽略这篇文章。
首先让我们复习一下什么是逆矩阵。一个矩阵 $A$ 的逆矩阵 $A^{-1}$,就是满足
$$ A^{-1}A = I $$
的一个矩阵。
大多数矩阵都是有逆矩阵的,而没有逆矩阵的那些矩阵,因为比较稀少,所以我们称之为 $\text{singular}$(奇异的、非凡的)。
一个矩阵是否有逆矩阵,或者反过来问它是否为 $\text{singular}$,可以通过计算一个特别的式子的值,看看它是否为 0 来判定。这个式子就叫做矩阵的 $\text{determinant}$,我愿意将它叫做决定式(教科书上约定俗成的垃圾翻译名词叫做行列式)。
$A$ 的决定式记作 $\det(A)$。
如果决定式的值为 $0$,则矩阵是 $\text{singular}$ 的;反之不是。
如何计算决定式
这里书上介绍的方法比较通用,我们可以用来计算任意 n x n 矩阵的决定式。
首先,对于矩阵 $A = (a_{ij})$,假设我们选择一个元素 $a_{ij}$,我们从 $A$ 中删除 $a_{ij}$ 所在的行和列,就得到了一个形状为 $(n-1) \times (n-1)$ 的矩阵 $M_{ij}$,我们称之为 $a_{ij}$ 的 minor。
基于 minor 的定义,进一步定义 $a_{ij}$ 的 cofactor $A_{ij}$ 如下:
$$ A_{ij} = (-1)^{i+j} \det(M_{ij}) $$
有了这个定义,我们就很容易得到决定式的计算方法。
具体来说,就是任选一行、或者一列,然后逐个元素计算这个元素的值和其 cofactor 的乘积,加起来即可。
这里有意思的地方是,随便选哪一行或者哪一列,最终的计算结果是一样的。
对于维数比较大的矩阵,决定式的这种原始的计算方法就涉及到逐次降维的过程,计算量会比较大。
有一个技巧是:我们可以选择包含 0 比较多的行或者列,来进行展开计算,以节省计算量。
定理 2.1.2: 转置矩阵 $A^T$ 和原矩阵 $A$ 的决定式相同
可以利用归纳法,以及结合决定式沿着行或列展开的结果等效这两个性质来证明。
定理 2.1.3:三角矩阵的决定式的值,就是对角线元素的乘积
$\text{triangular matrix}$(三角矩阵),$\text{lower triangular matrix}$(下三角矩阵)。
这个定理理解起来比较直观。首先不管是上三角矩阵还是下三角矩阵,其实是一样的,因为根据上面的定理 2.1.2,转置一下就可以互相转换。
其次,这个计算过程理解起来也很简单,就是因为有另一侧的三角形区域里都是 $0$,我们可以选择沿着 $0$ 比较多的方向依次展开,递归一下就可以得到定理所描述的结果了。
定理 2.1.4: 有全为 $0$ 的行或列的矩阵,其决定式为 $0$;如果有 $2$ 个完全相同的行或者列的矩阵,其决定式也为 $0$。
这里有 2 个结论。第一个全为 0 的情况比较好理解,不赘述。
第二个结论不是很好理解。其证明方法或者对它的理解方法可以有 2 种:
- 使用几何意义来直观理解
比如,$2 \times 2$ 矩阵决定式的几何意义是 $2$ 个向量所围成的平行四边形的面积;而 $3 \times 3$ 矩阵决定式几何意义是 $3$ 个向量围成的平行六面体的体积。那么如果有 $2$ 个向量相同,$2$ 维的情况下,平行四边形会被压缩成一条线,其面积为 $0$;而三维的情形,平行六面体被压缩为一个平面,因此体积为 $0$。这里都发生了降维的情况。
- 用代数的方式证明:需要利用到决定式的线性性质(可加性),详细过程略。
决定式的性质
首先有一个重要的引理 (Lemma):
如果 $A$ 是一个 $n \times n$ 矩阵,$A_{jk}$ 表示 $a_{jk}$ 的 cofactor,$k = 1, \ldots, n$。那么:
$$ \sum_{k=1}^n a_{ik} A_{jk} = \begin{cases} \det(A), & \text{if } i = j \\ 0, & \text{if } i \neq j \end{cases} $$
这个操作描述的是矩阵的一个行向量和另一行元素的 cofactor 向量做类似点乘(dot product)的操作的结果。 如果是不同的行,那么点乘结果为 0,假如是相同的行,则根据定义,结果就是矩阵的决定式 det(A).
这个操作实际上是前面基于 cofactors 计算决定式的操作的扩展,即考虑到了交换行向量的情况。因为我们接下来就要考虑在对矩阵的行做一些操作 (row operations) 的时候,会发生什么。
行操作 1
若交换矩阵的两行,形成的新矩阵的决定式,刚好是原矩阵决定式的相反数。
这个结论的推导,也可以使用归纳法,具体过程略。
行操作 2
将某一行乘以一个倍数 (scalar),形成的新矩阵的决定式,是原矩阵决定式的同样倍数。
这个结论推导比较简单,按想要操作的行展开为行向量 * cofactor 向量计算,然后行向量放大 scalar 倍,自然就体现为整体计算结果放大了 scalar 倍。
行操作 3
将某一行乘以一个倍数,加到另一行。
这个操作会导致结果的决定式不变。
要理解这个结果,需要按行展开,然后乘以倍数的行向量,和 cofactor 的行向量所在的行刚好不一样,这样两个行向量点乘的结果为 0(利用到上面说的引理),所以这个倍数的部分就被无视了,最终导致决定式的计算结果不变。
到这里我们可以发现,我们要研究的这些行操作,刚好对应于高斯消除法的那些操作。
关于初等矩阵(elementary matrix) 的决定式
$$ \det(E) = \begin{cases} -1 & \text{if $E$ is of type I} \\ \alpha \neq 0 & \text{if $E$ is of type II} \\ 1 & \text{if $E$ is of type III} \end{cases} $$
这里关于初等矩阵 type I, II, III 的定义先略过,晚点再详细了解(TODO).
定理 2.2.2
当且仅当 det(A) = 0 时,矩阵 A 是 singular 的。
要证明这个定理,我们对它进行很多次上面介绍的行操作,把它变成:
$$ U = E_k E_{k-1} \cdots E_1 A $$
的形式。这里 $E_i$ 都是一些初等矩阵。
而因为这些初等矩阵的决定式都不为 0,那么就说明,det(A) 为 0 就等价于 det(U) = 0.
此时可以观察 U 的最后一行是不是全为 0,如果是,则 det(U) = 0, A 为 singular.
反之,则 A 不是 singular 的。此时 det(U) = 1. (对角线上所有的 1 相乘)
所以推得
$$ \det(A) = \left[\det(E_k) \det(E_{k-1}) \cdots \det(E_1)\right]^{-1} $$
新的计算决定式的方法
即利用高斯消除类似的操作,运用上面的行操作 1, 2, 3. 计算过程中记录必要的因子,最后相乘即得到决定式的值。(细节略)
定理 2.2.3
推广,如果 A 和 B 都是 n x n 矩阵,那么
$$ \det(AB) = \det(A) \det(B) $$
其他话题及应用
伴随矩阵(The Adjoint of a Matrix)
伴随矩阵的形式比较复杂:
$$ \operatorname{adj} A = \begin{pmatrix} A_{11} & A_{21} & \cdots & A_{n1} \\ A_{12} & A_{22} & \cdots & A_{n2} \\ \vdots & \vdots & \ddots & \vdots \\ A_{1n} & A_{2n} & \cdots & A_{nn} \end{pmatrix} $$
这里意思是说,将矩阵 A 中的每个元素都换成对应的 cofactor, 然后再进行一个转置 (transpose) 操作,就得到了伴随矩阵。
根据这个伴随矩阵,可以推出 $A$ 的逆矩阵 $A^{-1}$ 的计算方法:
$$ A^{-1} = \frac{1}{\det(A)} \operatorname{adj} A, \quad \text{当 } \det(A) \neq 0 $$
Cramer’s Rule
这个 rule 发现了一种求解矩阵方程 Ax = b 的方法。
$$ x_i = \frac{\det(A_i)}{\det(A)}, \quad i = 1, 2, \ldots, n $$
其中 $\det(A_i)$ 指的是,将原矩阵 $A$ 的第 $i$ 列替换为 $b$ 得到的新矩阵的决定式。
这个 rule 虽然给出了确定性的解法,但是计算量很大,可能没有多少应用意义。
Coded Messages
这个密码学的简单应用很有意思。可以运用矩阵的性质来做简单的加解密。
首先,一段话由英文字母组成,可以把每个字母映射为一个数字,这样就得到了一串数字。但是这个办法很容易可以通过字母出现的频率来轻松猜到。
高级一点的办法是,我们可以将这句话所表示的数字的序列,排成一个矩阵 $M$。
然后,构造另一个矩阵 $A$,计算 $AM$,结果就是密文 $S$。
而解密方使用 $A^{-1}$ 去计算 $A^{-1}S$,就又解密得到了 $M$。
而为了方便计算,我们可以用特殊的方法构造出符合要求的 $A$ 和 $A^{-1}$,使得它们满足以下性质:
- 其元素都是整数
- 其决定式的值为 $1$ 或 $-1$
构造 $A$ 的方式是从单位矩阵 $I$ 出发,做若干次行操作 3,也可以使用行操作 1。
而有了 $A$ 之后,我们就可以通过 $\pm \operatorname{adj} A$ 来计算得到 $A^{-1}$,其元素也都是整数。
术语表
| 英文 | 教科书翻译 | 我的翻译(或选择不翻译) | 备注 |
|---|---|---|---|
| determinant | 行列式 | 决定式 | 行列式仅捕捉形状,但并未体现任何关于这个概念的英文单词的含义 |
| singular | 奇异的 | 奇异的 | (没毛病,直接沿用) |
| elimination | 消元 | 消除 | 元在这里指代不准确,被消除的目标实际上是行 (samples) 而不是列 (features / variables / 元), 有时候消除的过程不一定能达到消除变量的效果,所以我认为这应该算是错误翻译。elimination 这个词并没有说消除的是什么,属于翻译加戏但搞错概念的含义。 |
| row echelon form | 行阶梯形矩阵 | (沿用) |