
线性代数(六):特征值与特征向量
矩阵作用在向量上,绝大多数向量会被旋转和拉伸——但总有少数向量方向不变,只是被缩放。这些特征向量和它们对应的特征值,揭示了线性变换最深的结构,从 Google 搜索到 PCA 都靠它撑起。
一个核心问题#
用矩阵作用到向量上,结果可能千变万化:大部分向量会被旋转、拉伸,最终指向一个全新的方向;但总有一些特殊的向量,无论怎样变换都不会离开自己的方向——它们只会被拉长、缩短或反向。

这些“倔强”的向量就是特征向量(eigenvector),它们被拉伸或缩短的比例就是特征值(eigenvalue)。
寻找这些“不变方向”是数学中最强大的工具之一,特征值驱动了 Google 的 PageRank 算法,预测人口增长,分析桥梁和飞机的稳定性,甚至将原本需要超级计算机算几百年的问题简化为几步简单的计算。
你将学到什么#
- 特征向量和特征值的定义,以及它们清晰的几何意义
- 如何用特征方程求解它们
- 对角化:把矩阵重新表达为沿自身主轴的缩放
- 为什么矩阵涉及旋转时会出现复特征值
- 幂迭代、 PCA、 PageRank、 Leslie 人口模型、斐波那契数列——同一个概念的五种应用
- 对称矩阵的谱定理
预备知识#
第 3 章 (矩阵作为线性变换)、第 4 章 (行列式)、第 5 章 (零空间与列空间)。
特征向量到底是什么#
形式定义#
$$ A\vec{v} = \lambda\vec{v}, $$那么 $\vec{v}$ 就是 $A$ 的特征向量,$\lambda$ 是对应的特征值。
“eigen” 是德语,意思是“自己的”或“内在的”。特征向量就是矩阵独有的方向。
为什么非零很重要?#
零向量对任何 $\lambda$ 和任何 $A$ 都能满足 $A\vec{0} = \lambda\vec{0}$ 。如果允许零向量作为特征向量,那每个数都能成为特征值,这个概念就毫无意义了。所以特征向量必须是非零的。不过特征值可以为零——这说明 $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}. $$解得 $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}. $$解得 $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$ ,都可以定义 $f(A) := P f(D) P^{-1}$ 。这就是微分方程中的矩阵指数、连续时间马尔可夫链等背后的原理。
什么时候可以对角化?#
- 如果矩阵有 $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}$ 。每次迭代时,矩阵 $A$ 会让向量缩放 $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$ 作用上去,归一化,然后重复这个过程。最终结果会收敛到主特征向量。

经过 $k$ 次迭代后,$|\lambda_i|$ 最大的那一项会以 $(|\lambda_1|/|\lambda_2|)^k$ 的比例压倒其他项。归一化去掉绝对长度,剩下的就是主特征向量。收敛速度是几何级数,取决于谱隙 $|\lambda_2|/|\lambda_1|$ ——谱隙越大,收敛越快。
| |
如果需要求所有特征值,工业级算法是 QR 迭代, NumPy、 MATLAB 和 LAPACK 都在底层使用它:
| |
应用一:人口增长(Leslie 矩阵)#
把一个物种按年龄分成几类,用 $\vec{p}_t$ 表示 $t$ 时刻每个年龄类的数量。Leslie 矩阵 $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}. $$ | |
主特征值决定了整个系统的命运:如果 $|\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 就是对一个数十亿行的稀疏矩阵做幂迭代。
| |
应用三:斐波那契与黄金比例#
$$ \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$ 收敛到 $\phi$ 。黄金比例的出现并非偶然,它正是斐波那契矩阵的主特征值。
应用四: PCA 预告#
在 $\mathbb{R}^n$ 中取一团数据点,先中心化,再计算协方差矩阵 $C = \tfrac{1}{n-1}XX^T$ 。协方差矩阵 $C$ 的特征向量就是主成分,也就是方差最大的正交方向。特征值则表示这些方向上的方差大小。

PC$_1$ 指向点云分布的最长轴, PC$_2$ 与 PC$_1$ 垂直,且长度更短。把数据投影到前几个主成分上,就能得到保留最多信息的最低维表示。这个简单的思想支撑了人脸识别、基因表达聚类和推荐系统等应用。我将在第 9 章 中进一步说明,它还直接引出了奇异值分解(SVD)。
对称矩阵与谱定理#
实对称矩阵($A = A^T$ )是线性代数中最让人省心的一类矩阵:
- 特征值全是实数,不会有复数冒出来。
- 不同特征值对应的特征向量彼此正交。
- 总能找到一组标准正交的特征向量。换句话说,$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. $$如果只保留绝对值最大的前 $k$ 个 $\lambda_i$ ,就能得到 $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$ | 通常不同 |
相似矩阵#
如果 $B = P^{-1}AP$ ,那么 $A$ 和 $B$ 是相似矩阵,它们的特征多项式相同,因此特征值及其重数也完全一致。对角化只是相似变换恰好把 $B$ 变成对角矩阵的情况。
代数重数与几何重数#
- 代数重数:$\lambda$ 作为特征多项式根出现的次数。
- 几何重数:$\dim \ker(A - \lambda I)$ ,也就是对应 $\lambda$ 的线性无关特征向量的数量。
几何重数总是小于或等于代数重数。一个矩阵可以对角化的条件是,每个特征值的几何重数都等于代数重数。
总结#
特征值和特征向量揭示了线性变换的核心结构:
| 概念 | 含义 |
|---|---|
| 特征向量 | 变换后方向保持不变的向量 |
| 特征值 | 该方向上的缩放比例 |
| 对角化 | 在特征基下,变换变成独立的拉伸操作 |
| 复特征值 | 矩阵发生旋转——没有固定的实数方向 |
| 主特征值 | 决定 $A^k\vec{x}_0$ 的长期行为 |
| 谱定理 | 对称矩阵 $\Rightarrow$ 实特征值 + 正交特征向量 |
核心思想: 找到方向不变的向量,复杂的变换就简化成几个简单的拉伸操作。
从 Google 搜索到种群生物学,从量子力学到深度学习,特征值无处不在。掌握这个概念,我就掌握了应用数学的一把关键钥匙。
数值稳定性:为什么我们从不用特征多项式求特征值#
教科书上讲的特征值求法是这样的:列出 $\det(A-\lambda I)=0$ ,展开成关于 $\lambda$ 的多项式,然后求根。但实际写代码时,没人会这么干,原因非常有趣。
多项式的根对系数极其敏感,这种敏感性可以用“病态”来形容。 Wilkinson 举过一个经典例子:$\prod_{k=1}^{20}(x-k)$ 的根是 $1, 2, \ldots, 20$ 。如果把 $x^{19}$ 的系数稍微扰动一下,比如改变 $2^{-23}$ ——仅仅是一个系数末尾的一个 bit——靠近 $x=15$ 的那些根就会剧烈变化,变成半径大于 2 的复数对。输入的微小误差导致了输出的巨大偏差。这个多项式求根问题的条件数大约是 $10^{14}$ 。
$$A \;\longrightarrow\; \text{特征多项式系数} \;\longrightarrow\; \text{根}.$$第一步,计算行列式展开时会出现大量抵消,这本身就是误差放大的来源。第二步则是 Wilkinson 灾难的重演。即使是 $20\times 20$ 的矩阵,只要元素看起来很合理,绕一圈算出来的特征值可能连首位数字都错了。
实际的特征值求解器,比如 LAPACK 中的 dgeev(用于一般矩阵)和 dsyev(用于对称矩阵),背后分别是 numpy 的 np.linalg.eig 和 np.linalg.eigh。它们根本不生成特征多项式,而是用 QR 算法:迭代地分解 $A_k = Q_k R_k$
,然后令 $A_{k+1} = R_k Q_k$
。$A_{k+1}$
和 $A_k$
有相同的特征值(因为这是相似变换),在一定条件下,$A_k$
会收敛到上三角矩阵,特征值就出现在对角线上。通过引入 shift 和 Hessenberg 预处理,算法复杂度是 $\Theta(n^3)$
,并且具有反向稳定性:计算出的特征值是 $A+\delta A$
的精确特征值,其中 $\|\delta A\|\le c\,\varepsilon\,\|A\|$
。
对于对称矩阵,dsyev 使用三对角化加 分治(divide-and-conquer)或 MRRR 方法,速度更快(约 $\tfrac{4}{3}n^3$
),稳定性也更高。结论很简单:写代码时遇到“求特征值”,如果是对称矩阵就用 np.linalg.eigh,否则用 np.linalg.eig,别犹豫。特征多项式只是个定义,不是算法。
深度学习中的联系: Jacobian 特征值与梯度爆炸/消失#
$$\frac{\partial h_T}{\partial h_0} \;\approx\; \prod_{t=0}^{T-1} J_t,$$其中 $J_t$ 是第 $t$ 步的 Jacobian 矩阵。对于长序列(比如 $T=100, 1000$ ),这个连乘积的长期行为由平均 Jacobian 的特征值决定——这正是你刚刚学到的主特征值分析。
这里有三个关键点:
- 如果主特征值 $|\lambda| > 1$ ,梯度会指数级爆炸,$\|J^T\| \sim |\lambda|^T$ 。比如当 $|\lambda| = 1.1$ 时,经过 100 步,梯度会被放大到原来的约 $13{,}780$ 倍。这就是所谓的梯度爆炸。解决方法通常是梯度裁剪:一旦梯度范数超过某个阈值,就对其进行缩放。
- 如果主特征值 $|\lambda| < 1$ ,梯度会指数级衰减。比如当 $|\lambda| = 0.9$ 时,经过 100 步,梯度会缩小到原来的约 $26{,}000$ 分之一。这就是梯度消失,也是为什么普通的 RNN 难以学习长程依赖的原因。 LSTM 和 GRU 通过引入一个接近恒等映射的路径(cell state),让主方向上的等效 Jacobian 特征值接近 $1$ ,从而绕开了这个问题。
- 正交初始化将循环权重矩阵的所有奇异值(以及谱半径上界)初始化为 $1$ ,让训练从稳定边缘开始,而不是一开始就陷入不稳定或过度衰减的状态。
对于前馈网络,类似的分析逐层适用:每层 $W^TW$ 的特征值决定了梯度在反向传播过程中是被放大还是被削弱。 ResNet 的成功部分归功于 skip connection $x + F(x)$ ,它给层 Jacobian 加上了恒等矩阵,把特征值从零附近推开。 GAN 中的谱归一化通过约束 $\sigma_{\max}(W) \le 1$ 来保证稳定性。这些技巧全都直接来源于你刚刚建立的特征值直觉。
所以,当这一章提到“主特征值控制 $A^k\vec{x}_0$ 的长期行为”时,放到深度学习的语境下,可以理解为:它决定了你那 100 层的网络到底能不能训得动。
接下来的内容#
线性代数 18 篇
- 01 线性代数(一):向量的本质——不仅仅是箭头
- 02 线性代数(二):线性组合与向量空间
- 03 线性代数(三):矩阵作为线性变换
- 04 线性代数(四):行列式的秘密
- 05 线性代数(五):线性方程组与列空间
- 06 线性代数(六):特征值与特征向量 当前
- 07 线性代数(七):正交性与投影——当向量互不干扰
- 08 线性代数(八):对称矩阵与二次型
- 09 线性代数(九):奇异值分解 SVD
- 10 线性代数(十):矩阵范数与条件数——数值计算的健康体检
- 11 线性代数(十一):矩阵微积分与优化——从梯度到反向传播
- 12 线性代数(十二):稀疏矩阵与压缩感知——少即是多的数学奇迹
- 13 线性代数(十三):张量与多线性代数——从标量到高维数据立方体
- 14 线性代数(十四):随机矩阵理论——混沌中的秩序
- 15 线性代数(十五):机器学习中的线性代数——从 PCA 到推荐系统
- 16 线性代数(十六):深度学习中的线性代数——从全连接到 Transformer
- 17 线性代数(十七):计算机视觉中的线性代数——从像素到三维重建
- 18 线性代数(十八):前沿应用与总结——量子计算、GNN、大模型,与十八章回望