分块矩阵的广义特征值问题求解算法
题目描述
考虑广义特征值问题 \(A\mathbf{x} = \lambda B\mathbf{x}\),其中 \(A, B \in \mathbb{C}^{n \times n}\) 是大型稀疏或稠密矩阵,且 \(B\) 正定。当矩阵规模很大时,直接求解所有特征值计算成本过高。若 \(A\) 和 \(B\) 具有分块结构(例如来自物理问题的离散化),如何利用分块特性设计高效算法,计算部分广义特征值(如最小或最大特征值)?
解题过程
- 问题转化
由于 \(B\) 正定,可进行Cholesky分解:\(B = LL^H\),其中 \(L\) 为下三角矩阵。广义特征值问题转化为标准特征值问题:
\[ L^{-1} A L^{-H} \mathbf{y} = \lambda \mathbf{y}, \quad \mathbf{y} = L^H \mathbf{x}. \]
但直接分解 \(B\) 可能破坏分块稀疏性,且对大规模矩阵不适用。因此需利用分块结构避免显式分解。
- 分块结构利用
假设 \(A\) 和 \(B\) 为 \(k \times k\) 分块矩阵,子块尺寸为 \(m \times m\)(即 \(n = km\))。例如,\(A\) 和 \(B\) 可写为:
\[ A = \begin{bmatrix} A_{11} & \cdots & A_{1k} \\ \vdots & \ddots & \vdots \\ A_{k1} & \cdots & A_{kk} \end{bmatrix}, \quad B = \begin{bmatrix} B_{11} & \cdots & B_{1k} \\ \vdots & \ddots & \vdots \\ B_{k1} & \cdots & B_{kk} \end{bmatrix}. \]
若 \(B\) 块对角(常见于物理问题),即 \(B_{ij} = 0\)(\(i \neq j\)),则 \(B^{-1}\) 易求:\(B^{-1} = \mathrm{diag}(B_{11}^{-1}, \dots, B_{kk}^{-1})\)。此时问题可局部处理。
-
分块Rayleigh商迭代
针对最大广义特征值 \(\lambda_{\max}\):- 步骤1:初始化向量 \(\mathbf{x}_0\),满足 \(\mathbf{x}_0^H B \mathbf{x}_0 = 1\)。
- 步骤2:迭代直至收敛:
a. 计算Rayleigh商 \(\rho_k = \mathbf{x}_k^H A \mathbf{x}_k\)。
b. 求解线性系统 \((A - \rho_k B) \mathbf{z}_{k+1} = B \mathbf{x}_k\)。
利用分块结构加速求解:若 \(A - \rho_k B\) 保持分块稀疏性,可采用分块LU或Krylov子空间方法(如分块GMRES)。
c. 归一化:\(\mathbf{x}_{k+1} = \mathbf{z}_{k+1} / \| \mathbf{z}_{k+1} \|_B\),其中 \(\| \mathbf{z} \|_B = \sqrt{\mathbf{z}^H B \mathbf{z}}\)。 - 步骤3:输出特征对 \((\lambda, \mathbf{x}) \approx (\rho_k, \mathbf{x}_k)\)。
-
分块Lanczos方法
若需多个特征值,可扩展为分块Lanczos过程:- 步骤1:生成分块Krylov子空间 \(\mathcal{K}_p(L^{-1} A L^{-H}, Y_0)\),其中 \(Y_0 \in \mathbb{C}^{n \times r}\) 为初始分块向量。
避免显式计算 \(L^{-1} A L^{-H}\),通过求解 \(B\)-内积下的递推关系:
- 步骤1:生成分块Krylov子空间 \(\mathcal{K}_p(L^{-1} A L^{-H}, Y_0)\),其中 \(Y_0 \in \mathbb{C}^{n \times r}\) 为初始分块向量。
\[ B^{-1} A V_j = V_j T_j + \tilde{V}_{j+1} T_{j+1,j} E_j^H, \]
其中 $ V_j $ 为 $ B $-正交基($ V_j^H B V_j = I $),$ T_j $ 为块三对角矩阵。
- 步骤2:求解投影后的广义特征值问题 \(T_j \mathbf{s} = \theta \mathbf{s}\),得到Ritz值 \(\theta_i\) 和Ritz向量 \(V_j \mathbf{s}\)。
- 步骤3:通过残差判断收敛性,必要时重启算法。
- 算法优势
- 分块操作减少内存访问次数,提升缓存利用率。
- 保留矩阵稀疏性,避免显式求逆带来的填充现象。
- 可并行处理子块运算(如分块矩阵乘法或线性求解)。
总结
通过结合分块矩阵结构与迭代法(如Rayleigh商迭代或Lanczos方法),可高效求解大规模广义特征值问题,尤其适用于分块对角或块稀疏矩阵。关键点在于利用分块稀疏性加速线性求解步骤,并设计稳定的 \(B\)-正交化过程。