MatrixCalc

特征值与特征向量计算器

求 50×50 以内方阵的特征值与特征向量,并给出特征多项式,分别用雅可比法、QR 法与 Faddeev–LeVerrier 递推计算。

矩阵 A
: 3
: 3
矩阵 B
: 3
: 3
运算
结果
选择一个运算以在此处查看结果。错误信息也会显示在这里。

提示:可调整矩阵大小(最多 50×50)。A×B 要求 A 的列数等于 B 的行数。行列式/逆/迹/幂 需要方阵。

React, Tailwind & shadcn/ui. No external math deps. — 中文

输入一个方阵,打开高级标签页,用 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)ⁿ。两者都是核对手算结果的绝佳办法。

例题

21
12
→ det
2 − λ1
12 − λ
= λ² − 4λ + 3 = (λ − 1)(λ − 3)

根 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)ⁿ。两种都有人用,选定一种就一直用下去。

常见问题

特征值和特征向量有什么区别?
特征向量是变换不会旋转的方向;特征值是该方向被拉伸的倍数。两者总是成对出现。
矩阵会有复特征值吗?
会。实矩阵的特征多项式可以有复根——平面上的旋转就是标准例子。
这里为什么没有分步解答?
特征值由迭代数值算法求得,也就是雅可比法和 QR 法。它们的中间值是舍入产生的产物,并不是你能用手复现的推理过程。
怎么检验求出的特征值?
把它们相加与迹比较,再把它们相乘与行列式比较。两者都必须吻合。
为什么我的特征向量和课本上的不一样?
因为特征向量只在相差一个比例因子的意义下确定。只要你的是课本那个的倍数——包括负倍数——两者就都是对的。
特征多项式有什么用?
它的根就是特征值,因此它是矩阵与其谱之间的桥梁。它还出现在凯莱-哈密顿定理里,该定理说每个矩阵都满足自己的特征方程。

其他计算器