参数设置
重置
非对角元素固定(A[1,2]=A[2,3]=1, A[1,3]=0) 初始向量 v₀ = (1, 1, 1)/√3
每次迭代的 λ _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矩阵可以这样,但实际工作中的矩阵可能有数万甚至数百万维。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法从某种角度可以理解为「在所有方向同时运行幂法并做正交化」。每次迭代都分解 A=QR,然后更新 A←RQ。这个过程边推进上三角化的同时,暗中利用了幂法的收敛逻辑。加上Hessenberg预处理、多重移位等技巧,就成了LAPACK等现代特征值库的核心算法。
常见问题
幂法在哪些场景中使用?
幂法用于只需要最大绝对值特征值及其特征向量的场景。典型代表是Google的PageRank,对网络图的转移矩阵运行幂法,将定常分布(对应最大特征值1的特征向量)用作页面重要度。在结构分析中,也使用逆幂法(对A⁻¹的幂法)来概估最低次固有振动数。在数据分析和主成分分析(PCA)中,第1主成分也是通过对共方差矩阵进行幂法得到的。
逆幂法和移位法有什么区别?
逆幂法对A⁻¹应用幂法,得到最小绝对值特征值。带移位的逆幂法对(A−σI)⁻¹进行迭代,可以提取最接近移位值σ的特征值。通过这种方法,只要知道所需特征值的大致值,就能以高精度求得任意特征值和特征向量。每次迭代需要求解一次线性方程组,但收敛通常极快,这是主要优势。
不收敛或收敛速度非常慢该怎么办?
收敛速度由 |λ₂/λ₁| 的比值控制,此比值越接近1收敛越慢。解决方案包括:移位法(将A变换为A−σI来改变相对比)、Rayleigh商移位法(每次迭代更新最优σ),或当存在重根或复特征值时改用QR法等更通用的方法。即使初始向量与目标特征向量正交,由于浮点舍入误差,最终也会收敛。
与QR法的关系是什么?
QR法是求解所有特征值的通用方法,内部可理解为"在所有方向同时运行带正交化的幂法"。每次迭代进行A=QR分解然后A←RQ更新,这个过程在推进上三角化过程中隐含地使用了幂法的收敛逻辑。结合带移位的QR法、Hessenberg化、双重移位等技术,成为现代特征值库(如LAPACK)的基础算法。
现实应用
搜索引擎页面排名: Google的原始PageRank就是对网络转移矩阵的幂法。拥有数十亿页面的巨大稀疏矩阵,只需重复数十次矩阵向量积就能得到定常分布——幂法「不需要显式存储矩阵,只计算Av」这一特性在超大规模问题上是决定性的优势。
结构振动分析中的最低阶特征模态: 建筑、桥梁、机械的振动分析中,地震响应和共振由最低阶固有振动数(最小特征值)控制。对刚性矩阵K和质量矩阵M的广义特征值问题 Kx=λMx,用带移位的逆幂法可以快速提取目标特征值。有限元软件的Lanczos法和子空间法都是幂法的发展形式。
主成分分析和降维: 机器学习预处理中广泛使用的主成分分析(PCA)就是逐个求数据共方差矩阵的最大特征值和特征向量。第1主成分用幂法,后续分量结合「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还未充分收敛时,各分量值会有散差,不可信。Rayleigh商 $v^\top A v / v^\top v$ 是最小二乘意义下的「最匹配特征值」,相同迭代步数下通常有平方级的精度优势。实现时务必用Rayleigh商。
具体计算示例
当A11=6、A22=3、A33=0时,对象矩阵是非对角元素固定(A[1,2]=A[2,3]=1)的对称矩阵,理论最大特征值为λ₁≈6.317,第二特征值为λ₂=3.0。从初始向量v₀=(1,1,1)/√3开始,迭代10次时Rayleigh商已基本等于λ₁,迭代30次后误差降至10⁻¹⁴量级。因为收敛比 |λ₂/λ₁|≈0.475,每次迭代误差约削减一半,快速收敛。