跳到主要内容

幂法

一、直观理解:反复乘矩阵,主方向会“胜出”​

幂法(power method)用于计算矩阵按模最大的特征值及其特征向量。从随机向量 v0v_0 出发,迭代 vk+1=Avkv_{k+1}=Av_k 并归一化:若主特征值严格占优,分量中对应主特征向量的部分会被不断放大,其他模态相对消失。

这像多次施加同一线性变换后,系统主要沿“拉伸最强”的方向排列。PageRank 迭代、主成分中最大方差方向、马尔可夫链的收敛速度,都与主特征值思想相关。

二、适用场景与优缺点​

类型说明
适用场景只需主特征值/向量;矩阵大但可做矩阵—向量乘法;特征值模有明显间隙。
核心优点实现极简;只依赖 matvec,适合稀疏大矩阵;易扩展为反幂法、位移加速。
局限与缺点只给主特征对;若 $

三、核心原理​

设 AA 可对角化,v0=∑cixiv_0=\sum c_i x_i,Axi=λixiAx_i=\lambda_i x_i,∣λ1∣>∣λ2∣≥⋯|\lambda_1|>|\lambda_2|\ge\cdots,则

Akv0=λ1k(c1x1+∑i≥2ci(λiλ1)kxi)A^k v_0=\lambda_1^k\Big(c_1 x_1+\sum_{i\ge2}c_i\Big(\frac{\lambda_i}{\lambda_1}\Big)^k x_i\Big)

当 c1≠0c_1\ne0 时,Akv0A^k v_0 的方向趋于 x1x_1。Rayleigh 商

R(v)=vTAvvTvR(v)=\frac{v^\mathsf{T}Av}{v^\mathsf{T}v}

给出特征值近似。

变体​

  • 反幂法:对 A−1A^{-1} 做幂法,找按模最小特征值;
  • 位移反幂法:(A−μI)−1(A-\mu I)^{-1},找靠近 μ\mu 的特征值。

四、实践要点​

  1. 每步归一化防止溢出;
  2. 用 Rayleigh 商或 ∥Av−λv∥\|Av-\lambda v\| 监控;
  3. 随机初值,避免与主特征向量正交;
  4. 大矩阵不要显式求 AkA^k。

五、MATLAB 示例​

%% 幂法求主特征对
A = [2 1 0;
1 3 1;
0 1 4];
n = size(A,1);
v = randn(n,1); v = v / norm(v);
tol = 1e-12;
lamHist = zeros(100,1);

for k = 1:100
w = A * v;
lam = v' * w; % Rayleigh 商(v 已单位化)
vNew = w / norm(w);
lamHist(k) = lam;
if norm(vNew - v) < tol
v = vNew; break;
end
v = vNew;
end
lamHist = lamHist(1:k);

[V,D] = eig(A);
[~, idx] = max(abs(diag(D)));
lamTrue = D(idx,idx);
vTrue = V(:,idx);

fprintf("幂法 lambda ≈ %.12f, 迭代=%d\n", lam, k);
fprintf("eig lambda = %.12f\n", lamTrue);
fprintf("特征向量夹角 cos = %.6f\n", abs(v'*vTrue)/(norm(v)*norm(vTrue)));

figure;
semilogy(abs(lamHist - lamTrue), "-o");
xlabel("迭代"); ylabel("|\\lambda_k-\\lambda|");
title("幂法特征值误差"); grid on;

反幂法示例(最小模特征值):

A = [4 1; 1 3];
v = [1;0]; v=v/norm(v);
for k=1:30
w = A \ v; % 等价于 A^{-1}v
v = w/norm(w);
end
lamMin = v' * (A*v);
fprintf("最小特征值近似 = %.6f, eig = %.6f\n", lamMin, min(eig(A)));

六、如何解释结果​

报告主特征值、特征向量、迭代次数、间隙假设是否合理,并与 eig 在小规模上对照。说明主特征值在问题中的含义(增长率、谱半径、重要性得分等)。

七、常见误区​

1. 不归一化导致数值溢出​

2. 把幂法当全部特征值算法​

需要更多谱信息请用 QR 或 eigs。

3. 特征间隙极小仍抱怨“不收敛”​

应估计 ∣λ2/λ1∣|\lambda_2/\lambda_1| 或改用更强算法。

4. 符号/相位不唯一当成错误​

特征向量可差常数倍。

附:建模流程中的落地清单(幂法)​

在竞赛或课程论文中,仅写出定义式往往不够。建议按下列顺序组织材料,既能保证可复现,也便于评委快速抓住贡献。

1. 问题对齐​

先用两三句话说明:题目中的哪个子问题对应本方法,输入是什么,输出要支持什么决策。避免“因为常见所以使用”。若存在更简单的替代方法,应说明为何不够用。

2. 符号与单位​

列出核心符号表,强调单位一致。许多错误并非算法失败,而是日/年、米/千米、概率/百分比混用。对无量纲参数,说明取值来源(估计、文献、情景设定)。

3. 关键公式回顾​

反复 v←Av/∥Av∥v\leftarrow Av/\|Av\| 提取主特征对,速度取决于 ∣λ2/λ1∣|\lambda_2/\lambda_1|。

4. 计算与实现要点​

  • 固定随机种子(若涉及随机);
  • 记录中间量以便手算核对小例子;
  • 用极限情形或解析特例做冒烟测试;
  • 保存主要输入输出到表格,便于敏感性分析复用。

5. 补充 MATLAB 片段​

A=[1.5 0.5;0.5 1.5]; v=[1;0]; for k=1:30, v=A*v; v=v/norm(v); end; lam=v'*(A*v); disp([lam, max(eig(A))]);

6. 结果报告模板​

建议至少报告:主特征值、特征向量、迭代次数、与 eig 对照、间隙讨论。

7. 何时不该使用​

需要全部谱却只用幂法;或不归一化导致溢出。

完成以上清单后,再进入“小结”中的一句话金句,通常论文的方法段与验证段就会扎实许多。

八、小结​

幂法通过反复矩阵—向量乘提取按模最大的特征对,是大规模主特征值计算的入门与基础组件。其收敛速度由特征值间隙决定;结合反幂与位移,可定位谱中其他目标。