双步隐式位移QR算法计算实矩阵特征值
字数 1480 2025-10-29 11:31:55
双步隐式位移QR算法计算实矩阵特征值
题目描述
双步隐式位移QR算法是计算实矩阵全部特征值的高效数值方法。当矩阵特征值为复数时,为避免复数运算,算法采用双步策略,在一次迭代中处理一对共轭复数位移,并利用隐式QR技巧,通过实运算将矩阵收敛到实Schur形式,从而求出所有特征值。
解题过程
- 预处理:矩阵上Hessenberg化
- 目标:将原矩阵 \(A\) 通过正交相似变换化为上Hessenberg矩阵 \(H\)(即当 \(i > j+1\) 时 \(h_{ij} = 0\)),减少后续QR迭代的计算量。
- 方法:应用Householder反射矩阵 \(P_1, P_2, \dots, P_{n-2}\) 进行相似变换:
\[ H = P_{n-2} \cdots P_1 A P_1 \cdots P_{n-2} \]
- 关键:变换后特征值不变,且QR迭代中每步仅需 \(O(n^2)\) 运算(稠密矩阵需 \(O(n^3)\))。
-
双步隐式位移策略
- 位移选取:从 \(H\) 的右下角 \(2 \times 2\) 子矩阵 \(\begin{bmatrix} h_{n-1,n-1} & h_{n-1,n} \\ h_{n,n-1} & h_{n,n} \end{bmatrix}\) 计算两个位移量 \(\mu_1\) 和 \(\mu_2\),作为该子矩阵的特征值(可能为共轭复数)。
- 双步目的:若直接使用复数位移需复数运算,双步隐式位移通过实运算等效处理一对共轭位移。
-
隐式QR迭代步骤
- 步骤1:构造初等反射矩阵
计算向量 \(v = (H - \mu_1 I)(H - \mu_2 I)e_1\)(其中 \(e_1\) 为第一标准基向量),并构造Householder反射矩阵 \(P_0\) 使 \(P_0 v\) 平行于 \(e_1\)。 - 步骤2:隐式相似变换
对 \(H\) 应用 \(P_0\) 进行相似变换:\(H_1 = P_0 H P_0^T\)。此时 \(H_1\) 不再是上Hessenberg形,但仅前三行和列被“扰动”。 - 步骤3:恢复上Hessenberg形
通过一系列Givens旋转或Householder反射 \(P_1, P_2, \dots, P_{n-2}\),从左上角到右下角逐次消去非零元,将 \(H_1\) 还原为上Hessenberg矩阵 \(H'\):
- 步骤1:构造初等反射矩阵
\[ H' = P_{n-2} \cdots P_1 H_1 P_1^T \cdots P_{n-2}^T \]
此过程称为“凸起块”(bulge)的追逐,确保变换后矩阵与显式双步QR迭代结果相同。
- 收敛判断与降阶
- 检查次对角线元 \(|h_{i+1,i}|\):若某 \(|h_{i+1,i}| < \epsilon\)(阈值),则将矩阵分割为更小的块,分别处理。
- 最终矩阵收敛到实Schur形式:对角块为 \(1 \times 1\)(实特征值)或 \(2 \times 2\)(共轭复特征值对),直接计算特征值。
关键点
- 隐式技巧避免显式构造 \((H - \mu_1 I)(H - \mu_2 I)\),保证数值稳定性。
- 通过实运算处理复特征值,效率优于单步QR算法。
- 实际应用(如MATLAB的
eig函数)中结合对称性、分治等优化。