幂法
一、直观理解:反复乘矩阵,主方向会“胜出”
幂法(power method)用于计算矩阵按模最大的特征值及其特征向量。从随机向量 出发,迭代 并归一化:若主特征值严格占优,分量中对应主特征向量的部分会被不断放大,其他模态相对消失。
这像多次施加同一线性变换后,系统主要沿“拉伸最强”的方向排列。PageRank 迭代、主成分中最大方差方向、马尔可夫链的收敛速度,都与主特征值思想相关。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 只需主特征值/向量;矩阵大但可做矩阵—向量乘法;特征值模有明显间隙。 |
| 核心优点 | 实现极简;只依赖 matvec,适合稀疏大矩阵;易扩展为反幂法、位移加速。 |
| 局限与缺点 | 只给主特征对;若 $ |
三、核心原理
设 可对角化,,,,则
当 时, 的方向趋于 。Rayleigh 商
给出特征值近似。
变体
- 反幂法:对 做幂法,找按模最小特征值;
- 位移反幂法:,找靠近 的特征值。
四、实践要点
- 每步归一化防止溢出;
- 用 Rayleigh 商或 监控;
- 随机初值,避免与主特征向量正交;
- 大矩阵不要显式求 。
五、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. 特征间隙极小仍抱怨“不收敛”
应估计 或改用更强算法。
4. 符号/相位不唯一当成错误
特征向量可差常数倍。
附:建模流程中的落地清单(幂法)
在竞赛或课程论文中,仅写出定义式往往不够。建议按下列顺序组织材料,既能保证可复现,也便于评委快速抓住贡献。
1. 问题对齐
先用两三句话说明:题目中的哪个子问题对应本方法,输入是什么,输出要支持什么决策。避免“因为常见所以使用”。若存在更简单的替代方法,应说明为何不够用。
2. 符号与单位
列出核心符号表,强调单位一致。许多错误并非算法失败,而是日/年、米/千米、概率/百分比混用。对无量纲参数,说明取值来源(估计、文献、情景设定)。
3. 关键公式回顾
反复 提取主特征对,速度取决于 。
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. 何时不该使用
需要全部谱却只用幂法;或不归一化导致溢出。
完成以上清单后,再进入“小结”中的一句话金句,通常论文的方法段与验证段就会扎实许多。
八、小结
幂法通过反复矩阵—向量乘提取按模最大的特征对,是大规模主特征值计算的入门与基础组件。其收敛速度由特征值间隙决定;结合反幂与位移,可定位谱中其他目标。