传说中有一面照妖镜,无论妖怪怎么千变万化,被镜子一照就会现出原形。矩阵世界里也有这样一面镜子,名字叫对角化。一个矩阵就像一只会变化的妖怪,它能拉伸平面、扭曲方向、把空间搅得眼花缭乱;但只要找到了它身处的“正方向”——特征向量,那些复杂的动作就会全部变成单纯的拉伸或压缩。把特征向量排成一排组成镜面矩阵 \(P\),再把每个方向的拉伸倍数放进对角矩阵 \(D\),这时矩阵 \(A\) 就能写成 \(A = P D P^{-1}\)。这个式子就是矩阵对角化,也叫特征分解。 为什么它如此重要?因为幂运算、动态演化、PCA 降维这些 AI 从业者天天打交道的问题,一旦被照妖镜照出原形,就从绕来绕去的矩阵连乘变成了一目了然的数数游戏。这篇内容就带你拿起这面镜子,把矩阵妖怪的底细彻底看清。

岗位关联

对角化是通往特征分解、谱定理和 PCA 的必经之路。掌握它,你就能真正读懂机器学习算法中的矩阵运算,而不是只会套库。

目录
  1. 可视化演示
  2. 对角化定义
  3. 对角化条件
  4. 特征值与特征向量
  5. 相似矩阵
  6. 矩阵幂运算
  7. 约当标准型
  8. 实际应用
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示矩阵对角化 A=PDP⁻¹ 的分解过程、矩阵幂运算简化原理与特征值对动态系统稳定性的决定作用,切换模式查看各核心概念。

本节配有交互动效(进入视口后自动加载,约 3KB)。

对角化分解 A=PDP⁻¹ 紫色为特征向量矩阵P,对角矩阵D含特征值 A=PDP⁻¹, D=diag(λ₁,λ₂,...,λₙ) 对角化将复杂变换分解为旋转-缩放-逆旋转

对角化定义

小时候看《西游记》,最羡慕神仙手里那面照妖镜:妖怪再怎么七十二变,被镜子一照就现出毛茸茸的原形。矩阵也像一只妖怪。你给它一个向量,它可能旋转、拉伸、切变,让你完全摸不清规律;但翻开它的“简历”你会发现,它在某些特定的方向上的行为非常朴素——只是把一个数(特征值)乘在向量上。这些特殊方向就是特征向量。

如果一个 \(n\) 阶矩阵 \(A\),能找到 \(n\) 个线性无关的特征向量,把它们按列拼成一个矩阵 \(P\),再把对应的特征值填进对角矩阵 \(D\),就能写出 \(A = P D P^{-1}\)。这个公式之所以叫作对角化,是因为右边那个“夹心”结构里,\(D\) 的非零元素只出现在主对角线上——其余全是 0。这就像照妖镜照出了妖怪的真身:复杂矩阵原来不过在几个固定方向上做缩放。

为什么这个“夹心”结构如此优雅?因为当你用 \(A\) 去作用一个向量时,可以先让 \(P^{-1}\) 把向量换到镜子里的坐标,然后用 \(D\) 做简单缩放,最后再用 \(P\) 把结果换回原来的坐标。整个过程就是:换视角 → 缩放 → 换回来。

回到比喻:对角化成功,意味着妖怪的“五脏六腑”被完全分开看清了。它的原形不是一团乱麻,而是几条独立轴上各自的伸缩刻度。这就是为什么我们说矩阵对角化是“让矩阵计算变简单的魔法”——它把纠缠的世界拆成互不干扰的透明刻度。

A=PDP−1\displaystyle A = P D P^{-1}
对照上面这个公式:\(P\) 里装的是“妖身方向”(特征向量),\(D\) 里装的是“拉伸倍数”(特征值)。只要分解成功,复杂矩阵瞬间变成一组独立缩放。
  1. 镜面矩阵 \(P\) 由特征向量组成把 \(n\) 个线性无关的特征向量 \(v_1, v_2, \ldots, v_n\) 作为列放入矩阵,这就是把妖怪看清楚的“镜片排列”。
    P=(v1v2⋯vn)\displaystyle P = \begin{pmatrix} v_1 & v_2 & \cdots & v_n \end{pmatrix}
  2. 原形 \(D\) 的对角线上是特征值第 \(i\) 个特征向量 \(v_i\) 对应的特征值 \(\lambda_i\) 放在 \(D\) 的第 \(i\) 个对角位置,表示该方向的拉伸倍数。
    D=diag⁡(λ1,λ2,…,λn)\displaystyle D = \operatorname{diag}\left(\lambda_1, \lambda_2, \ldots, \lambda_n\right)
  3. \(P\) 必须可逆因为要从镜子世界来回切换,必须存在 \(P^{-1}\),所以特征向量必须线性无关。
    det⁡(P)≠0\displaystyle \det(P) \neq 0

对角化条件

不是所有妖怪都能被照妖镜照出完整的原形。有的妖怪修炼时缺了“魂魄”,对应的特征方向不够齐全,镜子照过去只能看到一个模糊的轮廓。数学上,“魂魄”就是线性无关的特征向量。一个 \(n\) 阶矩阵能对角化,当且仅当它拥有 \(n\) 个线性无关的特征向量。

那么什么时候能确保凑齐这 \(n\) 个特征向量呢?最省心的充分条件是:矩阵有 \(n\) 个互不相同的特征值。因为不同特征值对应的特征向量自动线性无关,一凑就是整整齐齐的一队。但要注意,“互不相同”只是充分条件而非必要条件——比如单位矩阵的所有特征值都是 1,它照样是对角矩阵,天生就是“原形”。

麻烦出在重根特征值身上。如果一个特征值作为特征多项式的根出现了 \(m\) 次(代数重数为 \(m\)),但解出来只有 \(r\) 个线性无关的特征向量(几何重数 \(r\)),当 \(r < m\) 时就等于妖怪缺魂少魄,裂缝合不拢,也就不能完全对角化。

所以,照妖镜能不能完全照出原形,取决于“魂魄”是否齐全:线性无关特征向量凑够 \(n\) 个,直接对角化;不够,就去第二层抽屉里找约当标准型帮我们解围。

det⁡(A−λI)=0\displaystyle \det(A - \lambda I) = 0
这是寻找特征值的“通缉令”:把未知数 \(\lambda\) 塞进对角线上让矩阵“瘦身”,再取行列式等于 0,解出来的 \(\lambda\) 就是妖怪可能的变身倍数。
  1. 构造矩阵 \(A - \lambda I\)从矩阵 \(A\) 的对角线上减去未知数 \(\lambda\),相当于试探“在哪个倍数下,这个变换会产生重合方向的妖气”。
    A−λI=(a11−λa12⋯a21a22−λ⋯⋮⋮⋱)\displaystyle A - \lambda I = \begin{pmatrix} a_{11}-\lambda & a_{12} & \cdots \\ a_{21} & a_{22}-\lambda & \cdots \\ \vdots & \vdots & \ddots \end{pmatrix}
  2. 令行列式等于 0行列式为 0 时,方程 \((A - \lambda I)v = 0\) 存在非零解,这个非零解正是妖身支柱——特征向量。
    det⁡(A−λI)=0\displaystyle \det(A - \lambda I) = 0
  3. 解多项式得特征值这个行列式展开后是一个关于 \(\lambda\) 的 \(n\) 次多项式,叫特征多项式,它的根就是全部特征值(含重数)。
    pA(λ)=det⁡(A−λI)=0\displaystyle p_A(\lambda) = \det(A - \lambda I) = 0

特征值与特征向量

要炼出这面照妖镜,得先找到妖怪的“魂”和“魄”。特征向量 \(v\) 是变换后方向不变(或刚好反向)的特殊向量,特征值 \(\lambda\) 是这个方向上被拉伸或压缩的倍数。它们满足同一个式子:\(Av = \lambda v\)。几何直观就是:一个向量经过矩阵变换后,没有拐弯,只在原方向上被拉长或缩短。

找特征向量前先找特征值,途径就是特征多项式。特征值确定后,把每个 \(\lambda\) 代回 \((A - \lambda I)v = 0\),解出的非零解集合构成特征子空间。特征子空间的维数称为几何重数;特征值在特征多项式中作为根出现的次数称为代数重数。判断矩阵能否对角化,关键就看每个特征值的这两个重数是否相等。

找到所有特征向量后,检查它们是否线性无关,就能决定照妖镜的镜片是否齐全。齐全了,\(P\) 和 \(D\) 就能直接搭起来。

Av=λv,v≠0\displaystyle Av = \lambda v, \quad v \neq 0
这个式子是整个对角化世界的“身份证”:只有当向量方向不变时,矩阵才会露出真面目。这也是为什么我们说特征向量是妖怪的骨架方向。
  1. 写出变换方程 \(Av = \lambda v\)矩阵作用在特征向量 \(v\) 上,效果等价于纯数 \(\lambda\) 乘 \(v\),没有改变方向,只有长度伸缩。
    Av=λv\displaystyle Av = \lambda v
  2. 移项成齐次方程把右边移到左边,得到齐次线性方程组,存在非零解的条件就是系数矩阵行列式为 0。
    (A−λI)v=0\displaystyle (A - \lambda I)v = 0
  3. 解出特征值 \(\lambda\)通过 \(\det(A - \lambda I) = 0\) 得到特征多项式,求根得到全部特征值。
    det⁡(A−λI)=0\displaystyle \det(A - \lambda I) = 0
  4. 回代求特征向量把每个 \(\lambda_i\) 代回齐次方程,解线性方程组得到基础解系,就是对应的特征向量。
    (A−λiI)v=0\displaystyle (A - \lambda_i I)v = 0

相似矩阵

同一只妖怪,从正面照、侧面照、斜上方照,镜子里的画面可能很不一样,但妖还是那只妖。矩阵世界也一样:同一个线性变换,在不同基底下呈现出不同的矩阵。若存在可逆矩阵 \(P\),使得 \(B = P^{-1} A P\),就说 \(A\) 与 \(B\) 相似。对角化其实就是寻找一个特殊的相似矩阵——让 \(B\) 变成对角矩阵 \(D\)。

相似矩阵共享一大批“身份证号”:特征值、迹、行列式、秩全都一样。这些统称相似不变量。为什么?因为相似只是换了坐标系来观察同一个变换,变换的内在几何结构不可能改变。用我们的话说:换一个角度的照妖镜,照出的还是同一只妖怪。

相似矩阵告诉我们:不要被矩阵外表迷惑——很多看起来不同的矩阵,本质是同一个妖怪在不同角度的投影。对角化的目标,是从所有相似矩阵中挑出最简洁的那个对角形态。

B=P−1AP\displaystyle B = P^{-1} A P
注意这个式子与对角化 \(D = P^{-1} A P\) 的关系:对角化就是找到一个特定的可逆矩阵 \(P\),让相似后的结果恰好是对角的。
  1. 用 \(P^{-1} A P\) 构造相似矩阵可逆矩阵 \(P\) 负责“把视角换过去再换回来”,中间夹着变换 \(A\)。
    B=P−1AP\displaystyle B = P^{-1} A P
  2. 从等式两边同时左乘 \(P\)得到 \(PB = AP\),说明矩阵 \(P\) 把两个相似矩阵“连接”起来。
    PB=AP\displaystyle P B = A P
  3. 特征值保持不变的验证若 \(Av = \lambda v\),令 \(w = P^{-1}v\),则 \(Bw = \lambda w\),所以相似矩阵特征值完全相同。
    Bw=P−1APP−1v=P−1Av=λP−1v=λw\displaystyle B w = P^{-1} A P P^{-1} v = P^{-1} A v = \lambda P^{-1} v = \lambda w

矩阵幂运算

妖怪修炼千年,相当于把自己连续作用了一千次——这在矩阵语言里就是求 \(A^k\)。如果直接连乘 \(k\) 次,那真是要命:每乘一次,矩阵里的数就互相纠缠一次,很快就变成天文数字。但如果先照出原形,事情就变得像数数一样简单:在原形(对角矩阵)的世界里,每个方向互不干扰,幂运算就只是把每个拉伸倍数单独取 \(k\) 次方。

于是有了对角化最闪耀的应用——快速计算矩阵幂:

其中 \(D^k = \operatorname{diag}\left(\lambda_1^k, \lambda_2^k, \ldots, \lambda_n^k\right)\)。原本需要做 \(k-1\) 次矩阵连乘,现在只需要做三次矩阵乘法,而中间的 \(D^k\) 更是简单到只需逐个对对角元素求幂。

更妙的是极限行为:如果某个特征值的模长最大,比如 \(|\lambda_1| > |\lambda_j|\),那么当 \(k\) 足够大时,\(A^k\) 的效果会完全被 \(\lambda_1^k\) 主导,所有向量都被拉向特征向量 \(v_1\) 的方向。这就是机器学习里幂迭代法的理论基础,也是“统治地位的妖气”吃掉其他妖气的过程。

用照妖镜的视角看:连乘千百次并不是越修越乱,只要看清了原形,每一根妖气都在自己的方向轴上安静地做幂运算,互不打扰。

Ak=PDkP−1\displaystyle A^k = P D^k P^{-1}
Ak=P(λ1kλ2k⋱)P−1\displaystyle A^k = P \begin{pmatrix} \lambda_1^k & & \\ & \lambda_2^k & \\ & & \ddots \end{pmatrix} P^{-1}
这个公式把“高次幂”从暴力连乘变成“夹心三明治”:先换视角,再逐轴取幂,最后换回来。
  1. 把 \(A^k\) 展开成镜中世界利用对角化公式 \(A = P D P^{-1}\),连续相乘 \(k\) 次后中间项全部抵消,只剩两端 \(P\) 和 \(P^{-1}\)。
    Ak=(PDP−1)k=PDkP−1\displaystyle A^k = (P D P^{-1})^k = P D^k P^{-1}
  2. 对角矩阵的幂只需逐个取幂对角矩阵 \(D\) 的 \(k\) 次方等于每个对角元素 \(\lambda_i\) 单独取 \(k\) 次方。
    Dk=diag⁡(λ1k,λ2k,…,λnk)\displaystyle D^k = \operatorname{diag}\left(\lambda_1^k, \lambda_2^k, \ldots, \lambda_n^k\right)
  3. 应用举例若 \(\lambda_1 = 3, \lambda_2 = 1\),则对角矩阵的 8 次方为 \(\operatorname{diag}(3^8, 1^8)\),瞬间算出巨大数值。
    diag⁡(3,1)8=diag⁡(6561,1)\displaystyle \operatorname{diag}(3, 1)^8 = \operatorname{diag}(6561, 1)

约当标准型

总有那么些妖怪,魂魄不齐,怎么照都凑不出完整的对角形态。别慌,数学里还准备了第二面镜子——约当标准型。它是对角化失败时的“近似原形”:既然没法完全分开,就尽量让每个特征值对应一个只含少量“纠缠”的小块,这个块叫约当块。

每个约当块的样子是:对角线上放同一个特征值 \(\lambda_i\),紧贴对角线上方的位置放 1,其余全是 0。整个约当标准型 \(J\) 由若干约当块拼成对角分块矩阵。要找到它,需要引入广义特征向量:普通特征向量满足 \((A-\lambda I)v = 0\),广义特征向量则允许 \((A-\lambda I)^m v = 0\) 对某个正整数 \(m\) 成立。

现在你明白了吧:约当标准型是照妖镜的“低配版”。妖魂不全没关系,把残魂整理成标准形状,依然能看出大致结构,只是多了几条黏连的"1"。

\displaystyle J = P^{-1} A P = \begin{pmatrix} J_1 & & \\ & J_2 & \\ & & \ddots \end{pmatrix}, \quadJ_i = \begin{pmatrix} \lambda_i & 1 & & \\ & \lambda_i & \ddots & \\ & & \ddots & 1 \\ & & & \lambda_i \end{pmatrix}
约当块里那个 1,就是“妖怪缺魂”留下的伤疤。它告诉我们:这条方向上还残留一丝纠缠,没法完全独立。
  1. 定义约当块 \(J_i\)对角线上全是同一个 \(\lambda_i\),右上角贴着一条 1,其余位置都是 0,代表一个“几乎独立”的方向束。
    Ji=(λi1λi⋱⋱1λi)\displaystyle J_i = \begin{pmatrix} \lambda_i & 1 & & \\ & \lambda_i & \ddots & \\ & & \ddots & 1 \\ & & & \lambda_i \end{pmatrix}
  2. 整个矩阵按块对角排列所有约当块沿着主对角线排开,构成分块对角矩阵 \(J\)。
    J=diag⁡(J1,J2,…,Jm)\displaystyle J = \operatorname{diag}(J_1, J_2, \ldots, J_m)
  3. 广义特征向量给出过渡矩阵用广义特征向量构成 \(P\),代入 \(P^{-1} A P = J\),得到不可对角化矩阵的“最优镜子”。
    J=P−1AP\displaystyle J = P^{-1} A P

实际应用

照妖镜炼成后,走出神话,回到火热的 AI 工坊。几乎所有需要反复迭代、长期演化的计算,背后都站着对角化。最典型的三个场景:动态系统、主成分分析(PCA)和马尔可夫链。

先看动态系统。状态向量 \(x_t\) 按规则 \(x_{t+1} = A x_t\) 演化时,\(t\) 步之后就是 \(x_t = A^t x_0\)。用对角化公式展开,系统状态变成特征向量的线性组合,每根“妖气”按自己的特征值幂独立涨落。哪根特征值模长最大,谁就最终统治系统,这是稳定性分析的核心结论。

再看 PCA。协方差矩阵是对称矩阵,它的特征分解给出数据变化最剧烈的方向。特征值就是各方向的方差,选最大的几个特征值对应的特征向量构成投影矩阵,就完成了降维。这不就是拿着照妖镜对高维数据说:现出原形,我只留最粗的几根妖气。

马尔可夫链也一样。转移矩阵的连乘决定状态概率分布,而对角化后可以快速算到稳态分布。搜索引擎的 PageRank 算法里,那根最大特征值对应的特征向量,就是网页排名的“灵魂方向”。

到这里,最初的照妖镜传说变成了现实工具:动态系统、数据降维、网页排序,本质上都是让矩阵现出原形,再顺着特征方向看透长期走势。这就是对角化给 AI 从业者带来的魔法。

Akv=∑i=1nciλikvi\displaystyle A^k v = \sum_{i=1}^{n} c_i \lambda_i^k v_i
这个式子浓缩了所有应用的本质:任意初始向量 \(v\),在对角化世界里化作特征向量的加权组合,每个方向独自以 \(\lambda_i^k\) 演化。
  1. 把初始向量分解到特征基\(v\) 可以写成特征向量的线性组合,系数 \(c_i\) 由 \(c = P^{-1}v\) 给出。
    v=∑i=1ncivi\displaystyle v = \sum_{i=1}^{n} c_i v_i
  2. 矩阵幂逐个方向作用因为 \(A v_i = \lambda_i v_i\),所以 \(A^k v_i = \lambda_i^k v_i\),每个方向独立演化。
    Akv=∑i=1nciλikvi\displaystyle A^k v = \sum_{i=1}^{n} c_i \lambda_i^k v_i
  3. 最大特征值主导长期行为当 \(k\) 增大时,模长最大的 \(\lambda_1^k\) 会指数级胜出,系统最终收敛到 \(v_1\) 方向。
    Akv≈c1λ1kv1\displaystyle A^k v \approx c_1 \lambda_1^k v_1

AI 应用场景

PCA 主成分分析:给高维数据照妖

阶段:特征工程与数据预处理

解决的问题:高维数据不仅计算开销大,还会有冗余特征干扰模型。传统做法是手工挑选特征,既主观又容易漏掉关键结构。通过对协方差矩阵做特征分解(对称矩阵必可对角化),特征值直接给出各方向的方差贡献,按特征值从大到小取前 \(k\) 个特征向量构成投影矩阵,就能在保留最多信息的同时把数据降维。

具体案例:某电商平台有 200 维用户行为特征,直接用逻辑回归训练又慢又容易过拟合。工程师对协方差矩阵做特征分解后,发现前 20 个特征值就贡献了 85% 的方差,于是只保留这 20 个主成分,训练速度提升 8 倍,AUC 反而提高了 3 个百分点。

马尔可夫链与 PageRank:算稳态就像算妖气

阶段:算法设计与推理

解决的问题:网页排名、推荐系统中的马尔可夫链需要计算转移矩阵的高次幂来逼近稳态分布。直接做矩阵连乘,迭代几百次非常耗时;利用对角化把转移矩阵写成 \(P D^k P^{-1}\),一次就能算到任意步的分布。

具体案例:一个新闻推荐系统的用户阅读行为建模为 50 个状态间的转移矩阵。工程师用 numpy 对矩阵做特征分解,直接取模长最大特征值对应的特征向量作为稳态分布,把原本需要 500 次迭代的收敛过程压缩成一次矩阵运算,线上延迟从 120ms 降到 15ms。

动态系统预测:看懂行业趋势的长期方向

阶段:时序建模与预测

解决的问题:人口增长、病毒传播、供需平衡等动态系统的状态演化 \(x_{t+1} = A x_t\),直接逐期迭代会累积误差且难以分析长期行为。对角化后,系统被拆成若干独立的方向,每个方向按特征值幂指数增长或衰减,一眼就能判断系统是否稳定、收敛到哪个状态。

具体案例:某共享出行公司用 10 维线性系统建模城市各区域车辆供需关系,通过对角化发现其中一个特征值大于 1,对应某区域车辆持续短缺的“失控模式”,于是提前调整调度策略,避免了连续三周的供需失衡。

Python 演示

python39 行
import numpy as np  def diagonalize(A):    """返回 P, D, P_inv 使 A = P @ D @ P_inv."""    eigenvalues, eigenvectors = np.linalg.eig(A)    P = eigenvectors    D = np.diag(eigenvalues)    P_inv = np.linalg.inv(P)    return P, D, P_inv  def fast_power(A, k):    """通过对角化公式 A^k = P D^k P_inv 计算矩阵幂."""    P, D, P_inv = diagonalize(A)    Dk = np.diag(np.diag(D) ** k)    return P @ Dk @ P_inv  def brute_power(A, k):    """直接连乘作为对照."""    result = np.eye(A.shape[0])    for _ in range(int(k)):        result = result @ A    return result  if __name__ == "__main__":    A = np.array([[2.0, 1.0], [1.0, 2.0]])    P, D, P_inv = diagonalize(A)    print("特征值:", np.diag(D))    print("特征向量矩阵 P:\n", P)     k = 8    Ak_fast = fast_power(A, k)    Ak_brute = brute_power(A, k)    print("A^8 通过对角化:\n", Ak_fast)    print("A^8 直接连乘:\n", Ak_brute)    print("两者一致:", np.allclose(Ak_fast, Ak_brute))
目的:用 numpy 把矩阵 \(A = \begin{pmatrix}2&1\\1&2\end{pmatrix}\) 对角化,再用对角化公式算出 \(A^8\),并与暴力连乘结果对比验证。
  1. eigenvalues, eigenvectors = np.linalg.eig(A)一行拿到所有特征值和特征向量,这是照妖镜的“炼成”步骤。
  2. D = np.diag(eigenvalues)把特征值摆到对角线上,形成原形矩阵 \(D\)。
  3. np.diag(D) ** k只对对角元素逐个取 \(k\) 次方,这就是对角化让幂运算变简单的关键。
  4. return P @ Dk @ P_inv用夹心公式 \(P D^k P^{-1}\) 还原出 \(A^k\),三次矩阵乘法搞定一切。
  5. np.allclose(Ak_fast, Ak_brute)验证两条路径结果一致,证明照妖镜没有骗人。

常见误区

误区我看到公式 \(A = P D P^{-1}\) 似乎对任何矩阵都能套,只要用库把特征值和特征向量算出来,不就行了吗?难道矩阵还能分解失败?

正解对角化要求 \(n\) 阶矩阵必须有 \(n\) 个线性无关的特征向量。特征值出现重根时,特征向量可能凑不够数,比如 \(\begin{pmatrix}1&1\\0&1\end{pmatrix}\) 只有一个线性无关的特征向量,就无法对角化。这就像妖怪缺了一魂,照妖镜怎么照都不完整。

为何常见:教材和库函数大多展示成功案例,初学者容易把“算出特征值”等同于“对角化成功”,忽略了特征向量数量才是关键。

误区老师说要特征值互不相同才能对角化,所以只要有两个特征值相等,就完蛋了对吧?

正解互不相同只是充分条件,不是必要条件。单位矩阵的特征值全是 1,但它本身就是对角矩阵,完美满足对角化的要求。真正要检查的是每个特征值的几何重数是否等于代数重数。

为何常见:充分条件好用、好记,课堂上常拿它举例子,久而久之被当成“非它不可”的门槛。

误区对角化就是算 \(\det(A - \lambda I) = 0\),解出特征多项式就大功告成了。

正解解特征多项式只是拿到特征值,后面还有大半路:把每个特征值代回方程组求特征向量、凑齐 \(n\) 个线性无关的特征向量、组装出矩阵 \(P\) 和 \(D\),最后验证 \(P^{-1}AP = D\)。特征值只是妖怪的“名号”,特征向量才是它的“肉身”。

为何常见:特征多项式是第一个出现的、计算味道最浓的步骤,初学者容易把开头的步骤当成全部流程。

误区做相似变换 \(P^{-1}AP\) 时,总觉得 \(P\) 应该是正交矩阵,不然就不是正经的“换坐标”。

正解相似变换只要求 \(P\) 可逆,不要求正交。只有在处理对称矩阵时,特征向量自然正交,\(P\) 才恰好是正交矩阵。不要因为 PCA 里总见到正交而把它当成一般规则。

为何常见:PCA 和对称矩阵的对角化是最常见的应用场景,投影矩阵总是正交的,看多了就产生了以偏概全的印象。

误区矩阵有特征值 0,行列式肯定是 0,矩阵都“退化”了,应该没法对角化了吧?

正解特征值为 0 只代表矩阵奇异(不可逆),跟能否对角化完全无关。对角矩阵 \(\operatorname{diag}(0, 1)\) 自己就带一个 0 特征值,但它天生就是对角化的完美形态。

为何常见:可逆性在课程里总是先出现,学习者容易把“矩阵不能求逆”和“矩阵不能分解”混为一谈。

面试题

Q1. 一个 \(n\) 阶矩阵 \(A\) 可对角化的本质条件是什么?

单选题 · easy

  • A.矩阵 \(A\) 必须满秩
  • B.存在 \(n\) 个线性无关的特征向量← 正确答案
  • C.矩阵 \(A\) 必须是实对称矩阵
  • D.矩阵 \(A\) 的行列式大于零

答案:B。可对角化意味着能找到可逆矩阵 \(P\) 让 \(P^{-1}AP = D\),这要求特征向量凑齐 \(n\) 个且线性无关。满秩或行列式大于零只说明可逆,和能否对角化无关;实对称矩阵是可对角化的充分条件但不是必要条件。

Q2. 若矩阵 \(A\) 的特征值为 3 和 1,则 \(A^{10}\) 的迹等于多少?(使用对角化公式)

单选题 · mid

  • A.\(3^{10} + 1^{10}\)← 正确答案
  • B.\(2 \times 3^{10}\)
  • C.\((3+1)^{10}\)
  • D.\(3 \times 10 + 1 \times 10\)

答案:A。对角化后 \(A^k = P D^k P^{-1}\),此时特征值为 \(3^k\) 和 \(1^k\)。迹等于特征值之和,所以是 \(3^{10} + 1^{10}\),不能用和的幂或乘积来替换。

Q3. 两个相似矩阵 \(A\) 与 \(B\)(\(B = P^{-1}AP\))必然相同的量有哪些?

多选题 · mid

  • A.矩阵的行列式← 正确答案
  • B.矩阵的迹← 正确答案
  • C.全部特征值(含重数)← 正确答案
  • D.零空间的维度

答案:ABC。相似矩阵是同一个线性变换在不同基下的表示,行列式、迹、特征值、秩都是相似不变量。但零空间维度不一定相同,例如 \(\operatorname{diag}(1,0)\) 和相似变换后的矩阵可能改变零空间的具体内容。

Q4. 以下哪个是特征向量的正确定义?

单选题 · easy

  • A.存在非零向量 \(v\),使得 \(Av = \lambda v\)← 正确答案
  • B.存在向量 \(v\),使得 \(A^2v = \lambda v\)
  • C.存在非零向量 \(v\),使得 \(Av = v + \lambda\)
  • D.存在单位向量 \(u\),使得 \(Au = \lambda\)

答案:A。特征向量的核心是矩阵作用后方向不变、只伸长或缩短,即 \(Av = \lambda v\) 且 \(v \neq 0\)。注意必须是“非零向量”和“矩阵作用等于数乘”,A 选项最完整。B 和 C 是错误变形,D 忽略了向量性。

Q5. 张三说:“特征值互不相同是矩阵可对角化的必要不充分条件。”他的说法对吗?

单选题 · mid

  • A.对,特征值不同一定可对角化
  • B.不对,互异特征值只是充分条件← 正确答案
  • C.不对,特征值相同也可对角化
  • D.对,特征值互异才能找到特征向量

答案:B。互不相同的特征值保证特征向量线性无关,因此是充分条件,但不是必要条件。单位矩阵特征值全为 1,依然可对角化。所以“必要不充分”说法错误,正确表述是“充分不必要”。

Q6. 特征值 \(\lambda\) 的几何重数是指什么?

单选题 · mid

  • A.特征多项式中 \((\lambda - x)\) 因子的次数
  • B.特征子空间 \(E_\lambda\) 的维数← 正确答案
  • C.矩阵 \(A\) 的秩
  • D.矩阵 \(A-\lambda I\) 的行列式值

答案:B。几何重数是方程 \((A-\lambda I)v = 0\) 的基础解系个数,也就是特征子空间的维数;代数重数才是特征多项式中因子重复的次数。矩阵可对角化的条件是两者相等。

Q7. 设 \(A\) 是 \(3\times3\) 矩阵,特征值为 \(2, 2, 5\),且拥有 3 个线性无关的特征向量。以下说法正确的是?

单选题 · mid

  • A.不可以对角化,因为特征值有重根
  • B.无法确定,因为特征值重复了
  • C.可以对角化,线性无关特征向量已凑齐← 正确答案
  • D.只有先做对称化才能对角化

答案:C。虽然特征值 2 出现了两次,但如果几何重数 = 代数重数 = 2,仍然能凑齐 3 个线性无关特征向量,照样可以写成 \(A = PDP^{-1}\)。这就是“重根不一定破坏对角化”的例子。

Q8. 对于矩阵 \(A = \begin{pmatrix}1&1\\0&1\end{pmatrix}\),以下说法正确的有?

多选题 · hard

  • A.特征值为 \(1, 1\)← 正确答案
  • B.只有 1 个线性无关的特征向量← 正确答案
  • C.矩阵不可对角化,但存在约当标准型← 正确答案
  • D.矩阵可以对角化为 \(\operatorname{diag}(1,1)\)

答案:ABC。该矩阵的特征多项式为 \((\lambda-1)^2\),特征值为 1(代数重数 2)。但解方程组 \((A-I)v=0\) 只能得到一维特征子空间,几何重数为 1,所以无法凑齐 2 个特征向量,不可对角化,只能用约当块 \(\begin{pmatrix}1&1\\0&1\end{pmatrix}\) 表示。

Q9. 已知约当块 \(J = \begin{pmatrix}2&1\\0&2\end{pmatrix}\),则 \(J^k\)(\(k \ge 1\))等于什么?

单选题 · hard

  • A.\(\begin{pmatrix}2^k & k \cdot 2^{k-1}\\ 0 & 2^k\end{pmatrix}\)← 正确答案
  • B.\(\begin{pmatrix}2^k & 2^{k-1}\\ 0 & 2^k\end{pmatrix}\)
  • C.\(\begin{pmatrix}k \cdot 2^k & 2^k\\ 0 & k \cdot 2^k\end{pmatrix}\)
  • D.\(\begin{pmatrix}2^k+1 & 0\\ 0 & 2^k\end{pmatrix}\)

答案:A。约当块可拆成对角部分 \(2I\) 加移位部分 \(N\),其中 \(N^2 = 0\)。用二项式展开得 \(J^k = 2^k I + k 2^{k-1} N\),所以右上角是 \(k \cdot 2^{k-1}\)。这也是约当标准型计算矩阵幂的典型手法。

Q10. 关于用对角化计算 \(A^k\),以下说法正确的有哪些?

多选题 · mid

  • A.对角矩阵的幂只需对角元素分别取 \(k\) 次方← 正确答案
  • B.恒等式 \(A^k = P D^k P^{-1}\) 成立← 正确答案
  • C.对角矩阵相乘可以交换顺序← 正确答案
  • D.对角矩阵的每个元素都必须等于 1

答案:ABC。对角矩阵的幂就是对每个对角元素单独求幂,且对角矩阵之间的乘法可交换,这些都是计算简化的基础。恒等式成立的前提是 \(A = PDP^{-1}\)。D 明显错误,对角元素正是特征值,不要求等于 1。