Series · Linear Algebra · Chapter 6

特征值与特征向量

矩阵作用在向量上,绝大多数向量会被旋转和拉伸——但总有少数向量方向不变,只是被缩放。这些特征向量和它们对应的特征值,揭示了线性变换最深的结构,从 Google 搜索到 PCA 都靠它撑起。

一个核心问题

把一个矩阵作用到一个向量上,几乎什么事都可能发生。绝大多数向量会被同时旋转拉伸,落到一个全新的方向。但在它们之中,总有少数特殊的向量,无论怎么作用都不肯离开自己所在的那条线——它们出来的方向和进去时一模一样,只是被拉长、缩短,或者翻了个面。

这些"幸存者"就是特征向量(eigenvector),它们被缩放的倍数就是特征值(eigenvalue)。

寻找这些"不变方向"是整个数学里最强大的招式之一。特征值驱动着 Google 的 PageRank、预测人口增长、决定桥梁和飞机的稳定性,也能把那些原本要超级计算机算上几个世纪的矩阵问题,变成几行算术。

你将学到什么

  • 特征向量和特征值的精确定义,以及一目了然的几何图像
  • 特征方程找出它们的方法
  • 对角化:把矩阵改写成沿着自己天然轴向的独立缩放
  • 为什么矩阵旋转时一定会出现复特征值
  • 幂迭代、PCA、PageRank、莱斯利人口模型、斐波那契——同一个想法的五种不同应用
  • 对称矩阵的谱定理

预备知识

第 3 章(矩阵即线性变换)、第 4 章(行列式)、第 5 章(零空间与列空间)。


特征向量到底是什么

形式定义

$$A\vec{v} = \lambda\vec{v},$$

则 $\vec{v}$ 是 $A$ 的特征向量,$\lambda$ 是对应的特征值

“eigen” 来自德语,意思是"自己的、内在的"。特征向量就是矩阵自己的一组私人方向。

为什么一定要非零?

零向量平凡地满足 $A\vec{0} = \lambda\vec{0}$ 对任意 $\lambda$ 和任意 $A$ 都成立。如果让它算数,那每个数都是特征值,这个概念就没有任何信息了。所以我们规定特征向量必须非零;但特征值是允许等于零的——这恰恰说明 $A$ 把那个方向压垮到了原点。

一张图胜过千言万语

在平面上挑两个向量,对它们用同一个矩阵 $A$,定义就一目了然了。一个在特征线上,另一个不在:

一个停在原线上的向量幸存为特征向量;普通向量被甩出原线

绿色向量 $\vec{v}$ 出来后变长了 3 倍,但方向完全不变——它所在的过原点的直线被保留了。橙色向量 $\vec{u}$ 则被旋转离开了原来那条线。所谓特征向量,就是那些"左边图里的虚线和右边图里的虚线完全重合"的向量。

两个直觉

揉面团。 揉的时候,面团内部几乎每个点都被搬到一个完全不同的位置——既混合又旋转。但沿着擀面杖那条轴,点只是被压扁——方向被保留。这些就是这次揉压变换的"特征方向"。

旋转游乐设施。 在旋转木马上,你身上的每个方向都在不停变——除了那根旋转轴,它永远指向上。那根轴就是一个特征值为 1 的特征向量。


特征值告诉了你什么

特征值 $\lambda$ 是沿着特征线方向的纯缩放因子。三种情形就能涵盖整个故事:

同一个特征向量,不同特征值:拉伸、不变、翻面缩小

完整的对照表:

特征值特征向量发生了什么
$\lambda > 1$被拉伸(更长,方向不变)
$\lambda = 1$完全不动(真正的不动方向)
$0 < \lambda < 1$被压缩(更短,方向不变)
$\lambda = 0$被压垮到原点——$A$ 在这条方向上是奇异的
$-1 < \lambda < 0$翻面并缩小
$\lambda < -1$翻面并拉伸
$\lambda \in \mathbb{C}\setminus\mathbb{R}$旋转——实数空间里没有不动方向

例:镜子反射

绕 y 轴的反射矩阵是 $A = \bigl(\begin{smallmatrix}-1&0\\0&1\end{smallmatrix}\bigr)$。

  • $\lambda_1 = -1$,特征向量 $(1,0)$:水平方向左右翻转。
  • $\lambda_2 = 1$,特征向量 $(0,1)$:竖直方向完全不动。

这正符合你照镜子的直觉:左右互换,上下不变。

例:剪切变换

剪切矩阵 $A = \bigl(\begin{smallmatrix}1&1\\0&1\end{smallmatrix}\bigr)$ 把每条竖直线斜推成倾斜的线。解特征方程会得到 $\lambda = 1$ 的重根,但只有一个独立的特征向量 $(1,0)$。

换句话说,剪切只有一条幸存的方向——水平轴——再也没有第二条。这种矩阵叫亏损矩阵(defective matrix),是不可对角化的典型例子。


求特征值:特征方程

$$(A - \lambda I)\vec{v} = \vec{0}.$$$$\det(A - \lambda I) = 0.$$

这就是特征方程。它是 $\lambda$ 的 $n$ 次多项式,由代数基本定理,在 $\mathbb{C}$ 上恰好有 $n$ 个根(计重数),这些根就是所有特征值。

完整算例

求 $A = \bigl(\begin{smallmatrix}4&2\\1&3\end{smallmatrix}\bigr)$ 的特征值与特征向量。

$$\det\begin{pmatrix}4-\lambda&2\\1&3-\lambda\end{pmatrix} = (4-\lambda)(3-\lambda) - 2 = \lambda^2 - 7\lambda + 10 = 0.$$

第二步——解方程。 $(\lambda - 5)(\lambda - 2) = 0$,所以 $\lambda_1 = 5$,$\lambda_2 = 2$。

第三步——求特征向量。

$$(A - 5I)\vec{v} = \begin{pmatrix}-1&2\\1&-2\end{pmatrix}\vec{v} = \vec{0}\;\Longrightarrow\; v_1 = 2v_2,\;\; \vec{v}_1 = (2, 1).$$$$(A - 2I)\vec{v} = \begin{pmatrix}2&2\\1&1\end{pmatrix}\vec{v} = \vec{0}\;\Longrightarrow\; v_1 = -v_2,\;\; \vec{v}_2 = (-1, 1).$$

验证。 $A(2,1)^T = (10,5)^T = 5\,(2,1)^T$。✓

两个免费的检验

$$\operatorname{tr}(A) = \lambda_1 + \cdots + \lambda_n,\qquad \det(A) = \lambda_1\cdots\lambda_n.$$

本例:$\operatorname{tr}(A) = 7 = 5+2$,$\det(A) = 10 = 5\cdot 2$。每次算完都用这两个等式查一下,几秒钟就能发现算术错误。

$2\times 2$ 矩阵特征向量的几何视图

把原始网格和变换后的网格画在一起,特征向量就跳出来了——它们就是网格"绕着转"的那两条线。

特征向量是网格变形时绕着不动的那两条线

右图的网格被剪切、拉伸,但绿色和紫色那两条过特征向量的直线始终待在原位——其它所有方向都倾斜了。


对角化:把矩阵化简到极致

核心想法

$$A = P D P^{-1}.$$

变换 $A$ 被因式分解成三段:换到特征基底下、独立缩放每条特征轴、再换回原坐标系。

三步合成 $A$

对角化即"换基底 → 纯缩放 → 换回来"

中间那一步只是 $D$——把 x 轴拉长 3 倍,y 轴保持不变。在特征基下,每个可对角化矩阵都只是几个独立缩放的清单

为什么这非常美妙

矩阵幂变得几乎免费。 因为 $A^k = P D^k P^{-1}$,而 $D^k = \operatorname{diag}(\lambda_1^k, \ldots, \lambda_n^k)$,一旦特征分解算好,把 $A$ 升到 100 次方几乎不要钱——你只是在算几个标量的幂,不是矩阵的幂。

长期行为。 当 $k \to \infty$,最大模的特征值(主特征值)主宰一切:$|\lambda_{\max}| > 1$,迭代系统爆炸;$|\lambda_{\max}| < 1$,系统衰亡;$|\lambda_{\max}| = 1$,系统保持有界。

矩阵函数。 对任何合理函数定义 $f(A) := P f(D) P^{-1}$——这是微分方程里的矩阵指数、连续马尔可夫链等等用的关键技巧。

什么时候可对角化?

  • 有 $n$ 个互不相同的特征值,一定可对角化(不同特征值对应的特征向量自动独立——这一点稍后会证)。
  • 实对称矩阵(更一般地,正规矩阵)总是可对角化的,即使有重特征值,而且还能用一组正交特征向量。
  • 如果独立特征向量的总数少于 $n$,矩阵就是亏损的(defective),无法对角化。剪切矩阵 $\bigl(\begin{smallmatrix}1&1\\0&1\end{smallmatrix}\bigr)$ 是经典反例:$\lambda = 1$ 的代数重数是 2,但几何重数只有 1。

复特征值:旋转背后的数学

旋转没有实特征向量

$$A = \begin{pmatrix}0&-1\\1&0\end{pmatrix}$$

的特征方程是 $\lambda^2 + 1 = 0$,所以 $\lambda = \pm i$。它没有任何实特征向量,这一点几何上是显然的:90° 旋转把实平面里每一个方向都搬走了。

实空间中的每个向量都被旋转出原线;迭代下去画出一个圆

左图说明:你随便挑一个方向,$R$ 都会把它甩出原线。右图把 $R$ 反复作用到一个起始向量上——轨迹画出一个圆,长度恒定,正是因为 $|\lambda| = |e^{i\theta}| = 1$。

一般旋转

$$R_\theta = \begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix}$$

的特征值是 $\lambda = \cos\theta \pm i\sin\theta = e^{\pm i\theta}$。这就是欧拉公式从一个行列式里掉出来。模 $|\lambda| = 1$ 编码了"旋转保长度"这一事实。

复特征值总是共轭成对

实矩阵的特征多项式系数是实数,所以复根必须共轭出现:若 $\lambda = a + bi$ 是特征值,则 $\bar\lambda = a - bi$ 也是。

复特征值如何决定系统行为

写 $\lambda = re^{i\theta}$。每次迭代缩放 $r$ 倍,旋转 $\theta$ 角。所以 $A^k\vec{x}_0$ 的长期行为是:

  • $r < 1$:螺旋向内(阻尼振荡)
  • $r = 1$:在圆/椭圆上转圈(等幅振荡)
  • $r > 1$:螺旋向外(发散振荡)

这正是为什么无阻尼摆永远摆下去、有阻尼摆会停下、控制论里调得不好的反馈回路会爆掉。


幂迭代:找到主特征向量

$$\vec{v}_{k+1} = \frac{A\vec{v}_k}{\|A\vec{v}_k\|}.$$

随便挑一个起始向量(几乎任何起点都可以),作用 $A$,归一化,重复。迭代结果会收敛到主特征向量。

幂迭代:任何起始方向都会被吸到主特征线上

$$A^k\vec{v}_0 = \sum_i c_i \lambda_i^k \vec{v}_i.$$

$k$ 次迭代后,$|\lambda_i|$ 最大的那一项以因子 $(|\lambda_1|/|\lambda_2|)^k$ 压倒其它项。归一化抹掉绝对长度,剩下的就是主特征向量。收敛速率是几何级数,由谱隙 $|\lambda_2|/|\lambda_1|$ 决定——隙越大,收敛越快。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import numpy as np

def power_iteration(A, num_iters=100):
    v = np.random.rand(A.shape[0])
    v /= np.linalg.norm(v)
    for _ in range(num_iters):
        Av = A @ v
        v = Av / np.linalg.norm(Av)
    eigenvalue = v @ A @ v          # 瑞利商
    return eigenvalue, v

A = np.array([[4, 2], [1, 3]])
val, vec = power_iteration(A)
print(f"主特征值: {val:.4f}")   # ~5.0

要求所有特征值,工业级算法是 QR 迭代,NumPy、MATLAB、LAPACK 底层都在用:

1
2
3
4
5
6
7
8
def qr_algorithm(A, num_iters=200):
    Ak = A.astype(float).copy()
    for _ in range(num_iters):
        Q, R = np.linalg.qr(Ak)
        Ak = R @ Q
    return np.diag(Ak)

print(qr_algorithm(np.array([[4, 2], [1, 3]])))   # [5, 2]

应用一:人口增长(莱斯利矩阵)

把一个物种按年龄段分类,$\vec{p}_t$ 表示 $t$ 时刻每个年龄段的人口数。莱斯利矩阵 $L$ 第一行是各年龄段的生育率,次对角线是存活率,模型就是 $\vec{p}_{t+1} = L\vec{p}_t$。

$$L = \begin{pmatrix}0&2&0.5\\0.6&0&0\\0&0.8&0\end{pmatrix}.$$
1
2
3
4
import numpy as np
L = np.array([[0, 2, 0.5], [0.6, 0, 0], [0, 0.8, 0]])
eigenvalues, eigenvectors = np.linalg.eig(L)
print("主特征值:", max(abs(eigenvalues)))

主特征值决定一切:$|\lambda_1| > 1$ 种群增长;$|\lambda_1| < 1$ 走向灭绝;$|\lambda_1| = 1$ 趋于稳定。对应的特征向量是稳定年龄分布——无论初始比例怎样,最终一定收敛到这个分布。


应用二:Google PageRank

Larry Page 和 Sergey Brin 当年问:怎么衡量一个网页的重要性?他们的回答是:一个网页重要,当且仅当重要的网页链接到它。 这个定义是递归的,而这种形状的递归,正是用特征向量来求解的。

$$\vec{r} = H\vec{r},$$

正是 $H\vec{r} = 1\cdot\vec{r}$——特征值为 1 的特征向量。

$$G = dH + \frac{1-d}{n}\,\mathbf{1}\mathbf{1}^T.$$

对 $G$ 做幂迭代就能得到 PageRank。运算上 PageRank 就是对一个数十亿行的稀疏矩阵做幂迭代。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import numpy as np
H = np.array([[0,   0, 1, 1/3],
              [1/2, 0, 0, 1/3],
              [1/2, 1, 0, 1/3],
              [0,   0, 0, 0  ]])
d, n = 0.85, 4
G = d * H + (1 - d) / n * np.ones((n, n))
r = np.ones(n) / n
for _ in range(100):
    r = G @ r
print("PageRank:", r)

应用三:斐波那契与黄金比例

$$\begin{pmatrix}F_{n+1}\\F_n\end{pmatrix} = \begin{pmatrix}1&1\\1&0\end{pmatrix}^n \begin{pmatrix}1\\0\end{pmatrix}.$$$$\phi = \tfrac{1+\sqrt 5}{2}\approx 1.618 \quad\text{(黄金比例)},\qquad \hat\phi = \tfrac{1-\sqrt 5}{2}\approx -0.618.$$$$F_n = \frac{\phi^n - \hat\phi^n}{\sqrt 5}.$$

由于 $|\hat\phi| < 1$,第二项衰减,于是 $F_{n+1}/F_n \to \phi$。黄金比例不是巧合——它就是斐波那契矩阵的主特征值。


应用四:PCA 预告

取 $\mathbb{R}^n$ 中的一团数据点,中心化,计算协方差矩阵 $C = \tfrac{1}{n-1}XX^T$。$C$ 的特征向量就是主成分——方差最大的那些正交方向。特征值就是沿这些方向的方差。

主成分就是协方差矩阵的特征向量

PC$_1$ 沿点云的最长轴,PC$_2$ 与之垂直、更短。投影到前几个主成分上,就得到保留信息最多的最低维表示。这一个想法支撑着人脸识别、基因表达聚类、推荐系统,并且——我们将在第 9 章看到——直接通向奇异值分解。


对称矩阵与谱定理

实对称矩阵($A = A^T$)是线性代数里最友好的一类矩阵:

  1. 所有特征值都是实数(不会冒出复根)。
  2. 不同特征值对应的特征向量互相正交
  3. 总能找到一组标准正交特征向量。等价地,$A = Q\Lambda Q^T$,其中 $Q$ 是正交矩阵($Q^{-1} = Q^T$)。

这就是谱定理,也是 PCA、图像压缩和大半个最优化能跑得这么干净的原因。

谱分解

$$A = \lambda_1\,\vec{q}_1\vec{q}_1^T + \lambda_2\,\vec{q}_2\vec{q}_2^T + \cdots + \lambda_n\,\vec{q}_n\vec{q}_n^T.$$

只保留 $|\lambda_i|$ 最大的前 $k$ 项,就得到 $A$ 在 Frobenius 范数下的最佳秩-$k$ 近似——这是低秩去噪和压缩的引擎。

正定性

对对称 $A$,特征值的正负给二次型 $\vec{x}^T A\vec{x}$ 分类:

条件二次型
所有 $\lambda_i > 0$正定——碗形,唯一极小值
所有 $\lambda_i \ge 0$半正定
所有 $\lambda_i < 0$负定——穹顶,唯一极大值
正负混合不定——鞍点

最优化里,目标函数在临界点处的 Hessian 正定,就是严格局部极小的二阶充分条件。


几条值得背下来的性质

对象特征值特征向量
$A$$\lambda_i$$\vec{v}_i$
$A^k$$\lambda_i^k$$\vec{v}_i$(不变)
$A^{-1}$(若可逆)$1/\lambda_i$$\vec{v}_i$(不变)
$A + cI$$\lambda_i + c$$\vec{v}_i$(不变)
$cA$$c\lambda_i$$\vec{v}_i$(不变)
$A^T$(实矩阵)$\lambda_i$一般不同
$$\operatorname{tr}(A) = \sum_i \lambda_i, \qquad \det(A) = \prod_i \lambda_i, \qquad A \text{ 可逆} \iff \text{所有 } \lambda_i \neq 0.$$

相似矩阵

若 $B = P^{-1}AP$,则 $A$ 和 $B$ 相似,特征多项式相同——因此特征值(含重数)相同。对角化只是相似变换刚好把矩阵变成对角形的幸运情形。

代数重数 vs. 几何重数

  • 代数重数:$\lambda$ 作为特征多项式根的重数。
  • 几何重数:$\dim \ker(A - \lambda I)$,对应的独立特征向量数。

总有 几何重数 $\le$ 代数重数。矩阵可对角化 $\iff$ 每个特征值都取到等号。


本章小结

特征值与特征向量揭示了线性变换的"骨架":

概念它告诉你什么
特征向量变换下其所在直线被保留的方向
特征值沿该方向的缩放因子
对角化在特征基下,变换就是几条独立的缩放
复特征值矩阵在旋转——实数空间没有不动方向
主特征值决定 $A^k\vec{x}_0$ 的长期行为
谱定理对称 $\Rightarrow$ 实特征值 + 正交特征向量

核心直觉。 找到那些"方向不变"的方向,复杂的变换就退化成几条简单的缩放清单。

从 Google 搜索到种群生物学,从量子力学到深度学习——特征值无处不在。掌握这一概念,你就握住了应用数学的一把万能钥匙。


下一步

  • 第 7 章: 正交性与投影——让 PCA 和最小二乘成为可能的几何基础。
  • 第 8 章: 对称矩阵与二次型——更深入地剖析谱定理。
  • 第 9 章: 奇异值分解——任何矩阵都可以写成"旋转 × 缩放 × 旋转",连非方阵也行。
  • 第 10–18 章: 范数、稀疏方法、矩阵微积分,以及在机器学习、视觉等领域的应用。

系列导航

Liked this piece?

Follow on GitHub for the next one — usually one a week.

GitHub