双步位移QR算法在实Hessenberg矩阵特征值计算中的应用
题目描述
双步位移QR算法是计算实矩阵特征值的高效数值方法,特别适用于已转化为上Hessenberg形式的矩阵。当矩阵有复特征值时,标准QR算法需在复数域运算,但双步位移策略通过两次实数位移避免复数运算。其核心思想是:对实上Hessenberg矩阵 \(H\),选取两个位移(通常由矩阵右下角2×2子矩阵的特征值决定),连续执行两次带位移的QR迭代,最终得到一个实运算过程,高效逼近拟上三角矩阵(实Schur形式),从而提取所有特征值。
解题过程
1. 问题背景与目标
- 对于实矩阵 \(A\),直接QR迭代每次需 \(O(n^3)\) 运算。若先将 \(A\) 化为上Hessenberg矩阵 \(H\)(仅上三角部分和非零次对角线元素非零),迭代成本降为 \(O(n^2)\)。
- 但若 \(H\) 有复特征值,单步位移QR算法需复数运算。双步位移策略通过组合一对共轭复位移,使整个迭代过程保持实数域运算。
- 目标:通过双步位移QR迭代,将 \(H\) 化为拟上三角矩阵(对角块为1×1或2×2块),其特征值易求。
2. 算法步骤详解
步骤1:初始化
- 输入实上Hessenberg矩阵 \(H \in \mathbb{R}^{n \times n}\)。若 \(A\) 未化简,先用Householder变换化 \(A\) 为 \(H\)(成本 \(O(n^3)\)),但此为预处理步骤,本题假设已化简。
步骤2:位移选取
- 计算 \(H\) 右下角2×2子矩阵 \(M = \begin{bmatrix} h_{n-1,n-1} & h_{n-1,n} \\ h_{n,n-1} & h_{n,n} \end{bmatrix}\) 的特征值 \(\lambda_1, \lambda_2\)。
- 若 \(\lambda_1, \lambda_2\) 为实数,可分别用作单步位移;若为共轭复数,则选作双步位移。双步位移策略总使用 \(\lambda_1, \lambda_2\)(无论实或复),确保迭代实值性。
步骤3:双步位移QR迭代
-
子步骤3.1:计算初始向量
计算向量 \(v = (H - \lambda_1 I)(H - \lambda_2 I)e_1\),其中 \(e_1 = [1, 0, \dots, 0]^T\)。由于 \(H\) 是上Hessenberg矩阵,\(v\) 仅前三个分量非零,计算仅需 \(O(1)\) 时间。 -
子步骤3.2:生成Householder反射子
构造Householder矩阵 \(P_0\),使 \(P_0 v\) 平行于 \(e_1\)(即零化 \(v\) 的后两个分量)。应用 \(P_0\) 到 \(H\):
\(H_1 = P_0 H P_0^T\)。因 \(P_0\) 仅影响前3行/列,\(H_1\) 保持Hessenberg形,但可能在第3行第1列引入非零元(称为"bulge")。 -
子步骤3.3:追 bulge 过程
通过一系列Householder变换 \(P_1, P_2, \dots, P_{n-2}\) 将 bulge 向下驱逐,恢复上Hessenberg形:- 对 \(k = 1\) 到 \(n-2\):
- 构造 \(P_k\) 零化 \(H_k\) 第 \(k+2\) 行第 \(k\) 列的 bulge 元素。
- 更新 \(H_{k+1} = P_k H_k P_k^T\)。
- 最终得新矩阵 \(\tilde{H} = H_{n-1}\),仍为上Hessenberg形,完成一次双步迭代。
- 对 \(k = 1\) 到 \(n-2\):
步骤4:收敛判断与分解
- 检查 \(\tilde{H}\) 的次对角线元素:若 \(|\tilde{h}_{i+1,i}| < \epsilon\)(阈值,如 \(\epsilon = 10^{-15} \|H\|\)),视其为零,将 \(H\) 分割为块对角形式。
- 对每个不可约子块(对角块为1×1或2×2)递归应用双步位移QR迭代,直到所有特征值分离。
步骤5:特征值提取
- 拟上三角矩阵的对角块:1×1块直接给出实特征值;2×2块的特征值为一对共轭复数,通过解二次方程求得。
3. 关键点说明
- 避免复数运算:双步位移等价于连续两次单步位移 \((H - \lambda_1 I)(H - \lambda_2 I) = H^2 - 2\text{Re}(\lambda_1)H + |\lambda_1|^2 I\)(当 \(\lambda_2 = \bar{\lambda}_1\)),所有运算在实数域完成。
- 隐式Q定理:追 bulge 过程等价于显式完成双步位移QR分解,但避免直接计算 \(H^2\),保证数值稳定性。
- 收敛性:通常次对角线元素快速衰减,最终隔离特征值。
4. 示例
考虑 \(H = \begin{bmatrix} 2 & 3 & 1 \\ 1 & 4 & 2 \\ 0 & 1 & 5 \end{bmatrix}\):
- 右下2×2块 \(M = \begin{bmatrix} 4 & 2 \\ 1 & 5 \end{bmatrix}\),特征值 \(\lambda_{1,2} = 4.5 \pm 0.5i\)(共轭复数)。
- 双步位移后,经3次Householder变换,次对角线元素减小,最终得拟上三角矩阵,特征值从2×2块提取。
此算法是LAPACK等库中实矩阵特征值计算(如dgeev)的核心。