幂迭代法模拟器 返回
数值线性代数模拟器

幂迭代法模拟器 — 主特征值的迭代计算

对 3×3 对称矩阵反复执行 v ← Av/‖Av‖,估计主特征值与其特征向量;通过 Rayleigh 商读出特征值,体会收敛比 |λ₂/λ₁| 决定收敛速度的过程。

参数设置
迭代次数 k
对角元素 A[1,1]
对角元素 A[2,2]
对角元素 A[3,3]
目标矩阵 A
410
131
012
非对角元素固定(A[1,2]=A[2,3]=1, A[1,3]=0)
初始向量 v₀ = (1, 1, 1)/√3
计算结果
估计主特征值 λ₁ (Rayleigh 商)
参考真值 λ₁ (3+√3)
估计误差 |λ_est − λ_true|
收敛比 |λ₂/λ₁|
各次迭代的 λ_est 与误差收敛

上:λ_est[k](红线)与 λ_true(灰色虚线)/下:log₁₀|λ_est[k]−λ_true|(蓝线)。斜率 ≈ log₁₀|λ₂/λ₁|

理论与主要公式

幂迭代法是通过反复执行矩阵向量积,求解矩阵 $A$ 的绝对值最大的特征值(主特征值)及其特征向量的基础算法。

基本迭代(带归一化)。$v_0$ 为任意初始向量:

$$v_{k+1} = \frac{A\,v_k}{\|A\,v_k\|_2}$$

通过 Rayleigh 商估计特征值。$v_k$ 越接近特征向量精度越高:

$$\lambda_k = \frac{v_k^{\!\top} A\,v_k}{v_k^{\!\top} v_k}$$

收敛速度。优势比 $r = |\lambda_2/\lambda_1|$ 越小越快:

$$|\lambda_k - \lambda_1| \;\sim\; r^{\,2k} \quad (\text{对称矩阵情形})$$

该矩阵为对称矩阵故有实特征值。在默认参数下,特征方程 $\lambda^3 - 9\lambda^2 + 24\lambda - 18 = 0$ 给出 $\lambda_1 = 3+\sqrt{3} \approx 4.732$,$\lambda_2 = 3$,$\lambda_3 = 3-\sqrt{3} \approx 1.268$。

幂迭代法模拟器是什么

🙋
求矩阵的特征值,解析解直接解特征方程不就行了吗?为什么要专门用迭代的方法?
🎓
3×3 当然可以这么做。但实际工程中的矩阵动辄几万、几百万维。在那种规模下,连构造特征多项式本身都已经不可行。幂迭代法只针对「绝对值最大的那一个特征值」,每步只需要一次矩阵向量积 $Av$ 即可。早期 Google 的 PageRank 就是这么做的——它用幂迭代算出整个网页图的特征向量。
🙋
原来 PageRank 真的是幂迭代法!上面的模拟器把迭代次数设为 1 时 λ_est 偏差很大,到 20 次左右就正好落在真值 4.732 上了。
🎓
这就是收敛过程。Rayleigh 商 $v^\top A v / v^\top v$ 的精度由 $v$ 与特征向量的接近程度决定。看下面的误差对数图——它是一条直线。斜率由「收敛比 $|\lambda_2/\lambda_1|$」决定,比越小下降越快。在默认矩阵下这个比是 $3/4.732 \approx 0.634$,也就是每迭代一次误差大约缩小到 0.6 倍。
🙋
把 A[1,1] 的滑块拉到 10 后,收敛比的卡片变小了,误差曲线以非常陡峭的角度下降!
🎓
没错。主特征值与其他特征值差距越大,幂迭代法越得心应手。反过来如果特征值挤在一起(收敛比接近 1),即便几百次迭代也几乎不收敛。实践中常用「位移法」人为改变特征值的相对比,或用 Rayleigh 商位移在每步更新最优的位移值来加速。这些技巧的根基都是这个收敛比理论。
🙋
如果想要全部特征值而不仅是一个怎么办?
🎓
这就轮到 QR 法登场了。其实 QR 法可以理解为「在所有方向上同时执行带正交化的幂迭代」。也就是说,幂迭代法也是 QR 法的核心。LAPACK、NumPy 的 eig 函数内部都使用 Hessenberg 化加上带位移的 QR 法,其理论根基正是你现在运行的这种简单迭代。

常见问题

幂迭代法适用于只需要绝对值最大的主特征值及其特征向量的场合。最具代表性的例子是 Google 的 PageRank:对网页转移矩阵执行幂迭代,将平稳分布(对应主特征值 1 的特征向量)用作页面的重要度。结构分析中,为估计最低阶固有频率会使用反幂迭代法(对 A⁻¹ 的幂迭代)。数据分析中主成分分析(PCA)的第一主成分也是对协方差矩阵的幂迭代结果。
反幂迭代法是对 A⁻¹ 应用幂迭代,得到绝对值最小的特征值。带位移的反幂迭代法对 (A−σI)⁻¹ 进行迭代,可取出最接近位移值 σ 的特征值。这样只要知道目标特征值的大致估计,就能高精度地求出任意特征值与特征向量。每次迭代要求解一次线性方程组,但收敛通常极快是其优点。
收敛速度由 |λ₂/λ₁| 控制,越接近 1 越慢。常用对策包括位移法(用 A−σI 替换 A 以改变相对比)、Rayleigh 商位移(每次迭代用当前最佳估计更新 σ),若由重根或复特征值导致,则改用更通用的 QR 法等。若初始向量与目标特征向量正交,理论上无法启动迭代,但实际中舍入误差会重新引入缺失的分量,最终仍会收敛。
QR 法是同时求出全部特征值的通用解法,本质上可以理解为「在所有方向上同时执行带正交化的幂迭代」。每步执行 A=QR 分解后再以 A←RQ 更新,在逐步上三角化的过程中隐含地使用了幂迭代的收敛逻辑。结合带位移的 QR 法、Hessenberg 化、双位移等技术,构成了 LAPACK 等现代特征值库的基础算法。

实际应用

搜索引擎的页面排名:Google 最初的 PageRank 就是对网页转移矩阵的幂迭代。面对几十亿网页构成的巨型稀疏矩阵,只需几十次矩阵向量积就能得到平稳分布——幂迭代「无需显式存储 A,只要能计算 Av 即可」的特性,在超大规模问题上具有决定性优势。

结构振动分析的最低阶模态:建筑、桥梁、机械的振动分析中,决定地震响应与共振的最低阶固有频率(最小特征值)至关重要。对刚度矩阵 K 与质量矩阵 M 的广义特征值问题 Kx=λMx,使用带位移的反幂迭代法可高速取出所需特征值。FEM 软件中的 Lanczos 法、子空间法等都是幂迭代法的发展形态。

主成分分析与降维:在机器学习预处理中广泛使用的主成分分析(PCA),等价于依次求解数据协方差矩阵的最大特征值与特征向量。第一主成分由幂迭代法得到,后续成分通过结合「除去已得特征向量方向」的去除化(deflation)技术获得。推荐系统中的奇异值分解(SVD)也常用幂迭代类方法计算。

马尔可夫链的平稳分布:转移概率矩阵 P 对应特征值 1 的特征向量(左特征向量),表示长时间后系统的状态分布。物理化学的蒙特卡罗模拟、排队论分析、自然语言处理的隐马尔可夫模型等,几乎所有需要随机系统平衡态的场合,幂迭代法或其推广 Arnoldi 法都在发挥作用。

常见误解与注意事项

最常见的误解是认为「幂迭代法总是收敛于最大特征值」。准确地说,只有当绝对值最大的特征值唯一、且初始向量与其特征向量不正交时才收敛。例如特征值出现 ±λ 这样绝对值相同符号相反的情形,迭代会震荡而不收敛。实对称矩阵的特征值全为实数,绝对值相同的情况只发生在符号相反时。本模拟器通过对角元素的调整保持矩阵对称,因此一般不会出现震荡,但对一般的非对称矩阵则需要特别注意。

第二个常见误解是「收敛只由迭代次数决定」。实际上由收敛比 $r = |\lambda_2/\lambda_1|$ 主导,比如 $r$ 为 0.99 的矩阵即便迭代 1000 次误差仍然很大。在模拟器中将 A[1,1] 调到 10、A[2,2]/A[3,3] 调到 1 让比值显著变小,仅约 5 次迭代精度就能改善若干个数量级。反之若对角元素接近,迭代次数翻倍也几乎无效。设计上的现代答案是「用位移法改善比值」。

最后请注意,不要混淆 Rayleigh 商与「按分量估计」(Av_k)_i / (v_k)_i。理论上 $v_k$ 完全收敛为特征向量后,任一分量都给出相同的 λ。但在 $v_k$ 未完全收敛时,各分量给出的值不一致且不可靠。Rayleigh 商 $v^\top A v / v^\top v$ 在最小二乘意义下返回「最匹配的特征值」,因此在相同迭代次数下精度通常以二阶量级提高。实现上务必使用 Rayleigh 商。