Skip to content

矩阵对角化与分解

1 相似对角化(特征值分解)

1.1 结论

一个 \(n\times n\) 实矩阵 \(A\),如果存在 \(n\) 个线性无关的实特征向量,就可以在实数域上进行相似对角化,写成

\[ A=W\Sigma W^{-1}, \]

其中,

\[ W=\begin{bmatrix}\mathbf{x}_1&\mathbf{x}_2&\cdots&\mathbf{x}_n\end{bmatrix}, \qquad \Sigma=\operatorname{diag}(\lambda_1,\lambda_2,\ldots,\lambda_n). \]

\(W\) 的每一列都是 \(A\) 的一个特征向量,\(\Sigma\) 的对角元素是与这些列向量一一对应的特征值。

这个条件也可以表述为:\(A\) 的特征多项式在实数域上完全分解,并且每个特征值的几何重数都等于它的代数重数。

其中:

  • 代数重数是特征值作为特征多项式根的重数。
  • 几何重数是对应特征子空间 \(\ker(A-\lambda I)\) 的维数。

对于 \(A\in\mathbb{F}^{m\times n}\) ,矩阵的核定义为 \(\ker(A)=\{x|Ax=0,x\in\mathbb{R}^n\}\) ,即矩阵的零空间。

如果 \(A\)\(n\) 个互不相同的实特征值,那么它一定可以在实数域上相似对角化。不过,特征值互不相同只是充分条件,并非必要条件。例如,单位矩阵的特征值全部相同,但它本身就是对角矩阵。

进一步地,如果能够选出一组两两正交的实特征向量作为基,那么将它们分别归一化后,得到的矩阵 \(Q\) 就是正交矩阵,于是

\[ A=Q\Sigma Q^\top. \]

一般矩阵的特征向量即使线性无关,也未必两两正交;归一化只能改变长度,不能使原本不正交的向量变得正交。对于实对称矩阵,总能选出一组标准正交的特征向量,从而实现上述正交对角化。

本节主要讨论实数域上的对角化。若讨论复数域上的对角化,则允许特征值、特征向量及 \(W\) 为复数;相应的条件是存在 \(n\) 个线性无关的复特征向量。

1.2 思考过程

我们讨论一个 \(n\times n\) 实矩阵 \(A\)

首先,矩阵 \(A\) 的特征值和特征向量满足

\[ A\mathbf{x}_i=\lambda_i\mathbf{x}_i, \qquad \mathbf{x}_i\in\mathbb{R}^{n\times1},\mathbf{x}\neq\mathbf{0}. \]

假设能够选出 \(n\) 个线性无关的实特征向量,把这些等式合在一起,就有

\[ A \begin{bmatrix} \mathbf{x}_1&\mathbf{x}_2&\cdots&\mathbf{x}_n \end{bmatrix} = \begin{bmatrix} \lambda_1\mathbf{x}_1& \lambda_2\mathbf{x}_2& \cdots& \lambda_n\mathbf{x}_n \end{bmatrix}. \]

\[ W=\begin{bmatrix}\mathbf{x}_1&\mathbf{x}_2&\cdots&\mathbf{x}_n\end{bmatrix}, \Sigma=\text{diag}(\lambda_1,\lambda_2,\dots,\lambda_n),\]

则上式可以写成

\[ AW=W\Sigma. \]

由于 \(W\) 的列向量线性无关,\(W\) 可逆。因此,

\[ W^{-1}AW=\Sigma ,\qquad A=W\Sigma W^{-1}. \]

还可以从构造一个左乘矩阵的角度理解这个过程。设

\[ B= \begin{bmatrix} \mathbf{b}_1\\ \mathbf{b}_2\\ \vdots\\ \mathbf{b}_n \end{bmatrix}, \]

其中每个 \(\mathbf{b}_i\) 都是 \(1\times n\) 行向量。那么 \(BAW\) 的第 \(i\) 行、第 \(j\) 列元素是

\[\begin{aligned} (BAW)_{ij}&=\left(\begin{bmatrix} \mathbf{b}_1\\ \mathbf{b}_2\\ \vdots\\ \mathbf{b}_n \end{bmatrix}\begin{bmatrix}A\mathbf{x}_1 & A\mathbf{x}_2&\dots&A\mathbf{x}_n\end{bmatrix}\right)_{ij}\\ &= \left(\begin{bmatrix} \mathbf{b}_1\\ \mathbf{b}_2\\ \vdots\\ \mathbf{b}_n \end{bmatrix}\begin{bmatrix}\lambda_1\mathbf{x}_1 & \lambda_2\mathbf{x}_2&\dots&\lambda_n\mathbf{x}_n\end{bmatrix}\right)_{ij}\\ &=\lambda_j\mathbf{b}_i\mathbf{x}_j \end{aligned}\]

如果要求

\[ \mathbf{b}_i\mathbf{x}_j= \begin{cases} 1,&i=j,\\ 0,&i\neq j, \end{cases} \]

就可以得到

\[ BAW=\Sigma. \]

这些要求合在一起,恰好就是

\[ BW=I. \]

所以,当 \(W\) 可逆时,满足要求的矩阵就是

\[ B=W^{-1}. \]

如果 \(W\) 的列向量不仅线性无关,而且两两正交、长度均为 \(1\),那么

\[ W^\top W=I, \qquad W^{-1}=W^\top. \]

此时,\(W\)\(B=W^\top\) 都是正交矩阵。


现在的问题是:什么时候能够选出 \(n\) 个线性无关的特征向量,使 \(W\) 可逆?

一个常用的充分条件是:\(A\)\(n\) 个互不相同的实特征值。

这是因为,属于不同特征值的特征向量一定线性无关。下面用反证法说明。

\(\lambda_1,\ldots,\lambda_m\) 互不相同,对应的非零特征向量为 \(\mathbf{x}_1,\ldots,\mathbf{x}_m\)。假设这些向量线性相关,从中选出一组包含向量个数最少的线性相关组,重新编号为

\[ \mathbf{x}_1,\ldots,\mathbf{x}_k. \]

于是存在不全为零的系数,使

\[ c_1\mathbf{x}_1+\cdots+c_k\mathbf{x}_k=\mathbf{0}. \]

根据这组向量的最小性,每个 \(c_i\) 都非零,并且 \(\mathbf{x}_1,\ldots,\mathbf{x}_{k-1}\) 线性无关。

在等式两边左乘 \(A\),得到

\[ c_1\lambda_1\mathbf{x}_1+\cdots+c_k\lambda_k\mathbf{x}_k=\mathbf{0}. \]

再减去原等式的 \(\lambda_k\) 倍,得到

\[ c_1(\lambda_1-\lambda_k)\mathbf{x}_1 +\cdots+ c_{k-1}(\lambda_{k-1}-\lambda_k)\mathbf{x}_{k-1} =\mathbf{0}. \]

由于特征值互不相同,且每个 \(c_i\neq0\),上式是 \(\mathbf{x}_1,\ldots,\mathbf{x}_{k-1}\) 的一个非平凡线性关系,与它们线性无关矛盾。

因此,属于不同特征值的特征向量线性无关。这个证明也适用于某个特征值为 \(0\) 的情形。


综上所述,只要能够选出 \(n\) 个线性无关的实特征向量,就可以用它们组成的矩阵将 \(A\) 对角化:

\[ \begin{bmatrix} \mathbf{x}_1&\mathbf{x}_2&\cdots&\mathbf{x}_n \end{bmatrix}^{-1} A \begin{bmatrix} \mathbf{x}_1&\mathbf{x}_2&\cdots&\mathbf{x}_n \end{bmatrix} = \operatorname{diag}(\lambda_1,\lambda_2,\ldots,\lambda_n). \]

从换基的角度看,\(W=\begin{bmatrix} \mathbf{x}_1&\mathbf{x}_2&\cdots&\mathbf{x}_n \end{bmatrix}\) 将特征向量基下的坐标转换为标准基下的坐标,而 \(W^{-1}AW\) 就是线性变换 \(A\) 在特征向量基下的矩阵。由于每个基向量都只被乘以对应的特征值,这个矩阵自然是对角矩阵。

1.3 更进一步

前面已经说明:当 \(A\)\(n\) 个互不相同的实特征值时,对应的 \(n\) 个特征向量构成一组基。但是,这组基未必是正交基

例如,

\[ A= \begin{bmatrix} 1&1\\ 0&2 \end{bmatrix} \]

有两个不同的特征值 \(1\)\(2\),对应的特征向量可以取为

\[ \mathbf{x}_1= \begin{bmatrix} 1\\0 \end{bmatrix}, \qquad \mathbf{x}_2= \begin{bmatrix} 1\\1 \end{bmatrix}. \]

它们线性无关,但内积为 \(1\),并不正交。即使分别归一化,内积仍然不为 \(0\)

如果已经找到一组两两正交的实特征向量 \(\mathbf{x}_1,\ldots,\mathbf{x}_n\),那么就可以构造

\[ Q= \begin{bmatrix} \dfrac{\mathbf{x}_1}{\|\mathbf{x}_1\|_2}& \dfrac{\mathbf{x}_2}{\|\mathbf{x}_2\|_2}& \cdots& \dfrac{\mathbf{x}_n}{\|\mathbf{x}_n\|_2} \end{bmatrix}. \]

首先,归一化不改变特征向量对应的特征值:

\[ A\frac{\mathbf{x}_i}{\|\mathbf{x}_i\|_2} = \lambda_i\frac{\mathbf{x}_i}{\|\mathbf{x}_i\|_2}. \]

其次,\(Q\) 的列向量构成标准正交基,因此

\[ Q^\top Q=I, \qquad Q^{-1}=Q^\top. \]

于是相似对角化可以写成更特殊的形式:

\[ A=Q\Sigma Q^\top. \]

这种分解称为正交对角化

对于实矩阵,能够正交对角化的充要条件是它为实对称矩阵。其中一个方向可以直接看出:如果

\[ A=Q\Sigma Q^\top, \]

由于 \(\Sigma\) 是实对角矩阵,那么

\[ A^\top =(Q\Sigma Q^\top)^\top =Q\Sigma Q^\top =A. \]

另一个方向,即实对称矩阵一定可以正交对角化,将在下面说明。

1.4 实对称矩阵相似对角化

并非所有实矩阵都能在实数域上相似对角化,但是所有实对称矩阵都可以,而且可以选用正交矩阵完成对角化。

定理 1 实对称矩阵的特征值必为实数,且每个特征值都可以选取实特征向量

考虑实对称矩阵 \(A\) 的一个特征值 \(\lambda\) 及对应的非零特征向量 \(\mathbf{x}\)。为了证明特征值是实数,这里先允许 \(\lambda\)\(\mathbf{x}\) 取复数。

\((\cdot)^*\) 表示共轭转置。由于 \(A\) 是实对称矩阵,有

\[ A^*=A. \]

一方面,

\[ \mathbf{x}^*A\mathbf{x} =\lambda\mathbf{x}^*\mathbf{x}. \]

另一方面,

\[ \mathbf{x}^*A\mathbf{x} =\mathbf{x}^*A^*\mathbf{x} =(A\mathbf{x})^*\mathbf{x} =\overline{\lambda}\mathbf{x}^*\mathbf{x}. \]

因此,

\[ (\lambda-\overline{\lambda})\mathbf{x}^*\mathbf{x}=0. \]

因为 \(\mathbf{x}\neq\mathbf{0}\),所以

\[ \mathbf{x}^*\mathbf{x} =\sum_i|x_i|^2>0. \]

于是

\[ \lambda=\overline{\lambda}, \]

\(\lambda\) 是实数。

进一步,将特征向量写成

\[ \mathbf{x}=\mathbf{u}+i\mathbf{v}, \qquad \mathbf{u},\mathbf{v}\in\mathbb{R}^n. \]

由于 \(A\)\(\lambda\) 都为实数,由

\[ A(\mathbf{u}+i\mathbf{v}) =\lambda(\mathbf{u}+i\mathbf{v}) \]

可得

\[ A\mathbf{u}=\lambda\mathbf{u}, \qquad A\mathbf{v}=\lambda\mathbf{v}. \]

\(\mathbf{u}\)\(\mathbf{v}\) 至少有一个非零,因此总能选取一个实特征向量。

这里的结论是“可以选取实特征向量”。如果允许复向量,那么实特征向量乘以非实复数,仍然是对应于同一特征值的特征向量。

定理 2 实对称矩阵的属于不同特征值的特征向量必正交

选取实特征向量,使

\[ A\mathbf{x}_1=\lambda_1\mathbf{x}_1, \qquad A\mathbf{x}_2=\lambda_2\mathbf{x}_2, \qquad \lambda_1\neq\lambda_2. \]

由于 \(A^\top=A\),有

\[ \begin{aligned} \lambda_1\mathbf{x}_1^\top\mathbf{x}_2 &=(A\mathbf{x}_1)^\top\mathbf{x}_2\\ &=\mathbf{x}_1^\top A^\top\mathbf{x}_2\\ &=\mathbf{x}_1^\top A\mathbf{x}_2\\ &=\lambda_2\mathbf{x}_1^\top\mathbf{x}_2. \end{aligned} \]

所以

\[ (\lambda_1-\lambda_2)\mathbf{x}_1^\top\mathbf{x}_2=0. \]

因为 \(\lambda_1\neq\lambda_2\),只能有

\[ \mathbf{x}_1^\top\mathbf{x}_2=0. \]

因此,这两个特征向量正交。

构造标准正交基

属于不同特征值的特征向量已经彼此正交。对于同一个特征值对应的特征子空间,可以先选取一组基,再使用 Gram–Schmidt 方法将其标准正交化。

特征值 \(\lambda\) 的特征子空间,就是 \(E_{\lambda}=\{\mathbf{x}:A\mathbf{x}=\lambda\mathbf{x}\}=\ker(A-\lambda I)\)

Gram-Schmidt 正交化

假设 \(\mathbf{u},\mathbf{v}\)\(E_{\lambda}\) 中两个线性无关的向量。先把第一个向量单位化 \(\mathbf{q}_1=\dfrac{\mathbf{u}}{\|\mathbf{u}\|}\) ,再从 \(\mathbf{v}\) 中减去它沿 \(\mathbf{q}_1\) 方向的分量 \(\mathbf{v}_{\perp}=\mathbf{v}-(\mathbf{q}_1^\top\mathbf{v})\mathbf{q}_1\) 。易知 \(\mathbf{q}_1^\top \mathbf{v}_{\perp}=0\) ,因此,继续单位化 \(\mathbf{q}_2=\dfrac{\mathbf{v}}{\|\mathbf{v}_{\perp}\|}\) 就得到了两个标准正交的特征向量。更多向量的情形,就是依次减去沿已有各个正交方向的投影。

这个过程不会破坏特征向量的性质,因为同一特征子空间中的向量的非零线性组合,仍然是对应于同一特征值的特征向量:

\[ A\left(\sum_i c_i\mathbf{x}_i\right) =\sum_i c_iA\mathbf{x}_i =\lambda\sum_i c_i\mathbf{x}_i. \]

不过,还需要说明:实对称矩阵的各个特征子空间合起来,确实能够张成整个 \(\mathbb{R}^n\) 这一点可以通过说明特征值的代数重数等于几何重数来证明。根据代数重数的定义,所有特征值的代数重数和为 \(n\) 。具体证明过程不是很简单,这里略了。

因此,对任意实对称矩阵 \(A\),都存在正交矩阵

\[ Q=\begin{bmatrix}\mathbf{q}_1&\mathbf{q}_2&\cdots&\mathbf{q}_n\end{bmatrix}, \]

使得

\[ Q^\top AQ=\Sigma, \qquad A=Q\Sigma Q^\top. \]

这就是实对称矩阵的谱定理。它也说明,实对称矩阵即使存在重复特征值,也仍然可以正交对角化。


2 SVD(Singular Value Decomposition)奇异值分解

上文讲了一个方阵如何对角化,现在我们试着将结论推广到 \(m\times n\) 的矩阵上来。当然,此时“对角阵”不是严格意义上的对角阵。

2.1 结论

一个 \(m\times n\) 的矩阵 \(A\) 可以写成

\[A = U \Sigma V^* \tag{2-1}\]

的形式。其中 \(A \in \mathbb{R}^{m\times n}\)\(A\in \mathbb{C}^{m\times n}\)\(U_{m\times m}\)\(V_{n\times n}\) 都是酉矩阵。\(V^*\)\(V\) 的共轭转置。

酉矩阵指满足矩阵的逆等于矩阵共轭转置的一类矩阵。正交矩阵是一类特殊的酉矩阵。

不妨令 \(m > n\) 。若 \(m < n\),只需要先计算共轭转置的 SVD 分解,再将结果取共轭转置即可。

这里的 \(\Sigma\)\(A\) 同尺寸,是一个广义的“对角阵”,也就是说

\[\Sigma = \begin{bmatrix}\Sigma_1 \\ 0\end{bmatrix}\]
\[\Sigma_1 = \begin{bmatrix}\sigma_1\\ & \sigma_2\\ & & \cdots\\ & & & \sigma_n\end{bmatrix}\]

\(\sigma_i\) 称为奇异值,是 \(AA^*\)\(A^*A\) 的非零特征值开根号的结果,\(U\) 是由 \(AA^*\) 的正交单位特征向量组成的矩阵,\(V\) 是由 \(A^*A\) 的正交单位特征向量组成的矩阵。

2.2 思考过程

我们假设结论成立,来试着反推一下 \(U\)\(\Sigma\)\(V\) 分别应当如何表示。

首先,我们有

\[A^* = V \Sigma^* U^*\]

则有

\[\begin{aligned} AA^* &= U\Sigma V^* V \Sigma^* U^*\\ &= U \Sigma\Sigma^* U^*\\ A^*A &= V\Sigma^* U^* U \Sigma V^*\\ &= V\Sigma^* \Sigma V^*\\ \end{aligned} \tag{2-2}\]

这里的 \(\Sigma\Sigma^*\)\(\Sigma^*\Sigma\) 都是对角阵:

\[\begin{aligned} \begin{bmatrix}\Sigma_1 \\ 0\end{bmatrix}\begin{bmatrix}\Sigma_1^* & 0\end{bmatrix} &= \begin{bmatrix}\Sigma_1\Sigma_1^* & 0\\ 0 & 0\end{bmatrix}\\ \begin{bmatrix}\Sigma_1^* & 0\end{bmatrix}\begin{bmatrix}\Sigma_1 \\ 0\end{bmatrix} &= \begin{bmatrix} \Sigma_1^* \Sigma_1 \end{bmatrix}\\ \end{aligned}\]

我们观察一下 (2-2) 式,可以发现其形式酷似矩阵对角化。也就是说,\(\Sigma\Sigma^*\) 是一个由 \(AA^*\) 的特征值组成的对角阵,\(U\) 是一个由 \(AA^*\) 的正交单位特征向量组成的矩阵。\(\Sigma^*\Sigma\) 是一个由 \(A^*A\) 的特征值组成的对角阵,\(V\) 是一个由 \(A^*A\) 的正交单位特征向量组成的矩阵。

\[\begin{aligned} AA^*\mathbf{u}_i &= \sigma_i^2 \mathbf{u}_i\\ A^*A\mathbf{v}_i &= \sigma_i^2 \mathbf{v}_i \end{aligned} \tag{2-3}\]

首先,我们证明一下,\(AA^*\) 的特征值中,有 \(m-n\) 个 0.

特征值用 \(A\mathbf{v} = \lambda \mathbf{v}\) 定义。当特征值为 0 时,即代表有不为 \(\mathbf{0}\) 的向量 \(\mathbf{v}\),使得 \(A\mathbf{v} = \mathbf{0}\),也即 \(v_1\mathbf{a}_1 + v_2\mathbf{a}_2 + ... + v_n\mathbf{a}_n = \mathbf{0}\) ,即 \(A\) 的列向量中,至少有一个列向量与其它列向量线性相关。

所以我们需要证明,\(AA^*\) 的列向量中,至少有 \(m-n\) 个列向量与其它列向量线性相关。

\(A^* = \begin{bmatrix}\mathbf{a}_1 & \mathbf{a}_2 & \cdots & \mathbf{a}_m \end{bmatrix}\),那么 \(AA^*\) 的列向量就是 \(A\mathbf{a}_1, A\mathbf{a}_2 , \cdots, A\mathbf{a}_m\),那么 \(AA^*\) 的列向量维度小于等于 \(A^*\) 的列向量维度,而 \(A^*_{n\times m}\) 维度小于等于 \(n\) 。因此,\(AA^*\) 的列向量维度小于等于 \(n\),也就是说至少有 \(m-n\) 个列向量与其它列向量线性相关。

接下来,我们证明 \(AA^*\) 的非零特征值和 \(A^*A\) 的非零特征值相同

对于 \(AA^*\) 的非零特征值 \(\lambda\),有 \(AA^* \mathbf{v} = \lambda \mathbf{v}\),这里的 \(A^*\mathbf{v}\) 显然不可能为 0. 我们在该式等号左右两边都左乘一个 \(A^*\),有 \((A^*A)(A^*\mathbf{v}) = \lambda (A^*\mathbf{v})\),我们将 \(A^*\mathbf{v}\) 看成 \(A^*A\) 的特征向量,\(\lambda\) 也就是 \(A^*A\) 的特征值了。因此,我们就证明了 \(AA^*\) 的非零特征值和 \(A^*A\) 的非零特征值相同。

再者,我们证明 \(AA^*\)\(A^*A\) 都是半正定的

对于 \(AA^*\),取其特征值有 \(AA^* \mathbf{v} = \lambda \mathbf{v}\),左乘 \(\mathbf{v}^*\),有 \(\mathbf{v}^*AA^* \mathbf{v} = (A^*\mathbf{v})^*(A^*\mathbf{v}) = \lambda \mathbf{v}^* \mathbf{v} \ge 0\)\(A^*A\) 同理。

综上,我们足以说明 (2-3) 式是成立的。我们称呼 (2-3) 式为特征值方程

根据特征值方程,我们可以知道,\(\Sigma\) 是由 \(AA^*\) 的特征值开根号组成的“对角阵”,\(U\) 是由 \(AA^*\) 的正交单位特征向量组成的矩阵,\(V\) 是由 \(A^*A\) 的正交单位特征向量组成的矩阵。

此外,还有奇异值方程

\[A\mathbf{v}_i = \sigma_i \mathbf{u}_i \ \ \ A^*\mathbf{u}_i = \bar{\sigma}_i \mathbf{u}_i\]

2.3 SVD 的用处

2.3.1 求伪逆

SVD 奇异值分解经常用来求伪逆。

\[A_{m\times n} = U\Sigma V^*\]

那么矩阵 \(A\) 的伪逆 \(A^{+}\)

\[A^{+}_{n\times m} = V\Sigma^{+}U^{*}\]

其中 \(\Sigma^{+}\) 是由 \(\Sigma\) 的倒数组成的对角阵,即

\[\begin{aligned} &\Sigma = \begin{bmatrix}\sigma_1 \\ & \sigma_2\\ & & \cdots\\ & & & \sigma_m & 0 & \cdots & 0 \end{bmatrix} \ \ \Sigma^{+} = \begin{bmatrix}\frac{1}{\sigma_1}\\ & \frac{1}{\sigma_2}\\ & & \cdots\\ & & & \frac{1}{\sigma_m}\\ & & & 0\\ & & & \vdots\\ & & & 0\end{bmatrix}\\ & \Sigma = \begin{bmatrix}\sigma_1 \\ & \sigma_2\\ & & \cdots\\ & & & \sigma_n \\ & & & 0 \\ & & &\vdots \\ & & &0 \end{bmatrix} \ \ \Sigma^{+} = \begin{bmatrix}\frac{1}{\sigma_1}\\ & \frac{1}{\sigma_2}\\ & & \cdots\\ & & & \frac{1}{\sigma_n} & 0 & \cdots & 0\end{bmatrix} \end{aligned}\]