幂迭代法求矩阵主特征值
字数 1207 2025-10-26 09:00:43
幂迭代法求矩阵主特征值
题目描述
给定一个 \(n \times n\) 的矩阵 \(A\),假设其存在一个严格占优的主特征值(即绝对值最大的特征值),且对应的特征向量唯一。设计一个数值算法,通过迭代逼近该主特征值及其对应的特征向量。
解题过程
-
问题分析
- 矩阵 \(A\) 的特征值 \(\lambda\) 和特征向量 \(v\) 满足 \(Av = \lambda v\)。
- 主特征值 \(\lambda_1\) 满足 \(|\lambda_1| > |\lambda_2| \geq \cdots \geq |\lambda_n|\)。
- 幂迭代法的核心思想是:反复用 \(A\) 作用在一个初始向量上,迭代方向会逐渐收敛到主特征向量的方向。
-
算法步骤
步骤1:初始化- 选择一个初始向量 \(x_0\)(通常为随机向量,需满足与主特征向量不正交)。
- 设置迭代次数 \(k = 0\) 和收敛阈值 \(\epsilon\)。
步骤2:迭代过程
- 计算 \(y_{k+1} = A x_k\)(用矩阵乘法更新向量)。
- 计算新向量的范数 \(\|y_{k+1}\|\)(常用2-范数)。
- 归一化:\(x_{k+1} = \frac{y_{k+1}}{\|y_{k+1}\|}\)(避免数值溢出)。
- 估计特征值:\(\lambda^{(k+1)} = x_{k+1}^T A x_{k+1}\)(瑞利商)。
步骤3:收敛判断
- 若 \(|\lambda^{(k+1)} - \lambda^{(k)}| < \epsilon\),则停止迭代,输出 \(\lambda^{(k+1)}\) 和 \(x_{k+1}\)。
- 否则,令 \(k = k+1\),返回步骤2。
-
关键细节
- 归一化的必要性:防止迭代中向量分量过大或过小导致数值不稳定。
- 收敛条件:主特征值需严格占优,否则收敛速度慢或不收敛。
- 瑞利商的作用:加速特征值的收敛,比直接使用 \(\|y_{k+1}\|\) 更精确。
-
示例演示
设 \(A = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}\),主特征值为 3,特征向量为 \((1, 1)^T\)。- 取 \(x_0 = (1, 0)^T\),迭代后 \(x_1 = \frac{(2, 1)^T}{\sqrt{5}} \approx (0.894, 0.447)^T\)。
- 继续迭代,\(x_k\) 逐渐逼近 \((1, 1)^T\),\(\lambda^{(k)}\) 逼近 3。
-
注意事项
- 若主特征值为复数或重复特征值,算法可能失效。
- 实际应用中常结合位移技术(如逆迭代)加速收敛或处理特殊特征值分布。