1453 字
7 分钟
矩阵的特征值与特征向量,手算和QR算法
2026-04-22
无标签

特征值是针对方阵(n×nn \times n)定义的。

定义#

如果一个非零向量 v\mathbf{v} 在经过矩阵 A\mathbf{A} 变换后,方向保持不变,只是长度发生了伸缩,那么:

Av=λv\mathbf{A}\mathbf{v} = \lambda \mathbf{v}
  • v\mathbf{v}(特征向量): 变换中的“不动轴”。

  • λ\lambda (特征值): 在这个轴上的“伸缩倍率”。

速记性质#

  1. 不同特征值对应的特征向量线性无关。
  2. 矩阵的迹=特征值之和,行列式=特征值之积。
  3. 对称矩阵的特征值都是实数,且对应的特征向量可以选取为相互正交的。
  4. 相似矩阵具有相同的特征值。(可以把大矩阵化成小矩阵来减少计算量)
  5. 对于上/下三角矩阵,特征值就是对角线上的元素。(根据定义 AλIA-λI 的行列式展开,非对角线元素不参与计算)

特征值分解(EVD)#

算出了矩阵 AAnn 个特征值 λ1,λ2,,λn\lambda_1, \lambda_2, \dots, \lambda_n 及其对应的特征向量 v1,v2,,vn\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n,那么把这些向量按列排在一起构成的矩阵 PP,就是特征向量矩阵

P=(v1v2vn)=(v11v12v1nv21v22v2nvn1vn2vnn)P = \begin{pmatrix} | & | & & | \\ \mathbf{v}_1 & \mathbf{v}_2 & \cdots & \mathbf{v}_n \\ | & | & & | \end{pmatrix} = \begin{pmatrix} v_{11} & v_{12} & \cdots & v_{1n} \\ v_{21} & v_{22} & \cdots & v_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ v_{n1} & v_{n2} & \cdots & v_{nn} \end{pmatrix}

把特征值打包进对角阵 Λ\Lambda:

Λ=(λ1000λ2000λn)\Lambda = \begin{pmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \end{pmatrix}

AP=PΛAP = P\Lambda

如果 PP 是可逆的(即特征向量线性无关,列向量组 vi\mathbf{v_i} 可以作为一组基),我们可以两边乘以 P1P^{-1},得到:

A=PΛP1=i=1nλiviviTA =P \Lambda P^{-1}=\sum_{i=1}^n \lambda_i \mathbf{v}_i \mathbf{v}_i^T

这就是矩阵的 特征值分解 (EVD)或者叫矩阵的对角化

对于第一个等号:矩阵 AA 的所有作用,都可以分解为:

  • 先换个坐标系(P1P^{-1}
  • 在新坐标系下缩放(Λ\Lambda
  • 再换回原坐标系(PP

如果 AA对称矩阵(协方差矩阵或 Gram 矩阵),它的特征向量矩阵 PP 不仅可逆,而且可以是正交矩阵(记作 QQ)。这意味着 Q1=QTQ^{-1} = Q^T。此时对角化公式变为:A=QΛQTA = Q \Lambda Q^T

这种变换仅仅是空间的旋转,不会扭曲空间。这就是为什么在降维(PCA)时,我们总能得到一组互相垂直的新坐标轴。

对于第二个等号:谱分解定理,将矩阵A分解成多个秩为1的矩阵(viviT\mathbf{v}_i \mathbf{v}_i^T 是一个秩为1的矩阵)之和,每个秩为1的矩阵都被对应的特征值 λi\lambda_i 缩放。

对角化的充分必要条件#

代数重数AM:特征值 λ\lambda 的代数重数是它作为特征方程根的重数。

几何重数GM:特征值 λ\lambda 的几何重数是对应于 λ\lambda 的特征向量的线性无关个数。也是 AλIA - \lambda I零空间的维数 (计算依据)。

恒满足 1GMAM1 \leq GM \leq AM

当且仅当每个特征值的几何重数等于代数重数时,矩阵 AA 才能被对角化。

TIP

对角化等价于存在一组由特征向量构成的基。

每个特征值 λ\lambda 的几何重数就是该特征值对应的线性无关特征向量的最大个数。

如果 GMAMGM \le AM,意味着该特征值无法提供足够多的线性无关特征向量,从而无法填满整个空间,无法对角化。

可逆性与特征值#

矩阵可逆的充要条件是:所有特征值均不为零。

因为如果存在一个特征值 λi=0\lambda_i = 0,对应的特征向量 vi\mathbf{v}_i 满足 Avi=0vi=0A\mathbf{v}_i = 0 \cdot \mathbf{v}_i = \mathbf{0},这说明 AA 存在非零向量被映射到零向量,即 AA 不可逆。

或者者从行列式的角度看,det(A)=i=1nλi\det(A) = \prod_{i=1}^n \lambda_i,如果有一个 λi=0\lambda_i = 0,则 det(A)=0\det(A) = 0,矩阵不可逆。

手撕特征值和特征向量#

手算的核心只有一句话:寻找让矩阵 (AλI)(A - \lambda I) 变成奇异矩阵(不可逆)的那个 λ\lambda

也就是特征方程(其实就是个行列式):

det(AλI)=0\det(A - \lambda I) = 0

对于二阶矩阵,特征方程有如下形式:

λ2tr(A)λ+det(A)=0\lambda^2 - tr(A)\lambda + det(A) = 0

三阶矩阵的形式需要引入二阶主子式 MiiM_{ii} ( 即划掉第 ii 行第 ii 列后剩下的 2×22 \times 2 行列式)(注意不是代数余子式)

λ3Tr(A)λ2+(M11+M22+M33)λdet(A)=0\lambda^3 - Tr(A)\lambda^2 + (M_{11} + M_{22} + M_{33})\lambda - \det(A) = 0

注意用两个等式检验:

{tr(A)=i=1nλidet(A)=i=1nλi\begin{cases} tr(A) = \sum_{i=1}^n \lambda_i \\ det(A) = \prod_{i=1}^n \lambda_i \end{cases}

解出来特征值,然后再解线性方程组,得到特征向量。

计算机方法:QR算法#

5次及以上的多项式没有通用的代数求根公式。所以,计算机放弃了去解那个复杂的 det(AλI)=0\det(A-\lambda I)=0,转而采用一种“不断磨平”矩阵的迭代策略。

QR分解的核心思想#

把矩阵 AA 分解成一个正交矩阵 QQ 和一个上三角矩阵 RR,即 A=QRA = QR

QR算法的迭代过程#

  1. 初始化:令 A0=AA_0 = A

  2. 迭代(对于 k=0,1,2,k = 0, 1, 2, \dots):

    • 将当前的矩阵进行 QR 分解:Ak=QkRkA_k = Q_k R_k
    • QR反过来相乘得到下一个矩阵:Ak+1=RkQkA_{k+1} = R_k Q_k
  3. 收敛:随着迭代次数增加,AkA_k 会逐渐趋向于一个上三角矩阵。

QR反过来相乘这是一个神奇的数学技巧。观察一下:

Ak+1=RkQk=(QkTAk)Qk=Qk1AkQkA_{k+1} = R_k Q_k = (Q_k^T A_k) Q_k = Q_k^{-1} A_k Q_k

这意味着 Ak+1A_{k+1} 始终与 AkA_k 相似。所以无论迭代多少次,QR反过来相乘。而在不断的分解与重新组合中,矩阵非对角线下方的元素会不断趋近于 0。

矩阵的特征值与特征向量,手算和QR算法
https://biscuit0613.github.io/posts/lineralgebra/eigenvalueandeigennvector/
作者
Biscuit
发布于
2026-04-22
许可协议
CC BY-NC-SA 4.0