输入一个方阵,打开高级标签页,用 eig(A) 求特征值,用 eigvec(A) 求特征向量。分解标签页还会给出精确算术下的特征多项式。这 三者是同一个问题的三种看法,本页余下的内容就是把它讲透。
什么是特征向量
矩阵作用在大多数向量上时,向量的方向都会改变。特征向量是极少数能保住方向的向量之一:矩阵只是把它 拉长或压短。这个倍数就是特征值。形式上说,对某个非零向量 v 有 A·v = λ·v。
矩阵对空间所做的一切,都是沿着这些特殊方向的拉伸的混合,因此凡是需要真正理解一个线性变换、而不只是 套用它的场合,它们都会出现——主成分分析、振动模态、微分方程的稳定性、PageRank 向量。
特征多项式
定义式 A·v = λ·v 可以改写成 (A − λI)·v = 0。非零的 v 要能满足它,A − λI 就必须是奇异的——否则唯一解是 v = 0——而矩阵奇异当且仅当它的行列式为零。所以特征值就是使 det(A − λI) = 0 的那些 λ,而这个表达式就是特征多项式。
对 n×n 矩阵,它的次数是 n,而其中两个系数不必展开就能直接从矩阵上读出来:紧挨着首项的那个系数是迹 的相反数,常数项则是行列式乘以 (−1)ⁿ。两者都是核对手算结果的绝佳办法。
例题
| 2 | 1 |
| 1 | 2 |
| 2 − λ | 1 |
| 1 | 2 − λ |
根 1 和 3 就是特征值。注意这两处核对:迹是 4,而 λ 的系数是 −4;行列式是 3,常数项也是 3。λ = 3 对应的特征向量是 (1, 1)——矩阵把这条对角线方向上的一切都放大三倍——λ = 1 对应的是 (1, −1),矩阵原封 不动地把它留下。两者互相垂直,这并非偶然:这个矩阵是对称的,而对称矩阵的特征向量总是正交的,特征值 总是实数。
特征向量从来不唯一
如果 v 可以,那么 2v 也可以,−v 也可以,任何非零倍数都可以:方程只约束方向。所以计算器返回的是一个 代表,通常已归一化为单位长度;你的答案可能与课本相差一个比例因子,而两者同样正确。要比较的是方向, 不是元素。零向量按定义被排除在外——它对任何 λ 都满足方程,因而什么也说明不了。
特征向量不够用的时候
n×n 矩阵按重数计恰好有 n 个特征值,但特征值重复并不保证有同样多的线性无关特征向量。数目不够的矩阵 称为亏损矩阵,它无法对角化:根本不存在一组特征向量构成的基。把代数重数当作特征向量 的个数来读,是这里最容易犯的错误之一。
实矩阵也可能有复特征值。平面上的旋转根本没有实特征向量——没有哪个实方向能在旋转后保住自己——它的 特征值是一对共轭复数。
这个计算器是怎么算的
特征值是数值求解的:对称矩阵用雅可比旋转,其余情形用带 Wilkinson 位移和收缩的 QR 算法。特征多项式 走的是另一条路——Faddeev–LeVerrier 递推,它从各次幂的迹出发构造系数,全程保持精确算术,而不去展开 一个符号行列式。
由于特征值算法是迭代的而非代数的,特征值是本站唯一没有分步解答的运算:中间那些 迭代值是舍入产生的产物,而不是你能用手复现的推理。它们也只收敛到实特征值,所以谱为复数的矩阵会报告 未收敛,而不会编造一个答案。反过来走——从多项式去求特征值——手算到 3×3 尚可,数值上却是个坏主意, 因为多项式的根对系数误差极其敏感。
怎么核对自己算出的特征值
有两条恒等式可以在不重算一遍的情况下抓出错误。全部特征值之和等于迹,也就是主对角线上元素的和;全部 特征值之积等于行列式。两条都不满足,就说明中间某一步错了;只满足其中一条,那多半是漏掉了某个根,或者 把某个根的重数记错了。
二阶矩阵可以直接用这两条把答案写出来,连方程都不必解:特征多项式必然是 λ² − (迹)λ + (行列式)。至于 特征向量,核对方式更直接——把它代回去算 A·v,看结果是不是恰好等于 λ 乘以原来的 v。方向一致、倍数正好 是 λ,就说明这个特征向量是对的,哪怕它和课本相差一个常数因子也没关系。
常见错误
- 指望长方形矩阵有特征值。它只对方阵有定义——长方形的对应物是奇异值。
- 把特征向量当成唯一的。特征向量的任何非零倍数仍是特征向量,确定的只有方向。
- 以为特征值总是实数。实矩阵完全可能有复特征值。
- 从每个元素里减去 λ。λI 只在对角线上是 λ,其余全为零,因此只有对角线会变。
- 把重数读成特征向量的个数。二重根未必带来两个线性无关的特征向量;不带来时,矩阵就是亏损的。
- 把符号约定弄丢。det(A − λI) 与 det(λI − A) 相差 (−1)ⁿ。两种都有人用,选定一种就一直用下去。