分块矩阵的Krylov子空间方法在求解多重线性方程组中的应用
题目描述
考虑多重线性方程组
\[A X = B \]
其中 \(A \in \mathbb{R}^{n \times n}\) 是大型稀疏矩阵(可能对称或非对称),\(B \in \mathbb{R}^{n \times s}\) 是包含 \(s\) 个右端项的矩阵(\(s \ll n\)),\(X \in \mathbb{R}^{n \times s}\) 是待求解的未知矩阵。目标是高效求解所有 \(s\) 个线性方程组,避免对每个右端项独立调用迭代法(如GMRES或CG)的高计算成本。分块Krylov子空间方法通过将多个右端项作为整体处理,利用子空间投影技术同时逼近所有解向量。
解题过程
-
问题分析
- 若对每个右端项 \(b_i\)(\(B\) 的列)独立求解 \(A x_i = b_i\),需构建 \(s\) 个独立的Krylov子空间,计算成本为 \(O(s \cdot \text{迭代次数} \cdot n)\),且忽略右端项之间的潜在相关性。
- 分块方法的核心思想:将 \(B\) 视为整体,构建一个分块Krylov子空间 \(\mathcal{K}_k(A, B) = \text{span}\{B, AB, A^2B, \dots, A^{k-1}B\}\),通过投影到该子空间同时求解所有方程组。
-
分块Arnoldi过程构建正交基
- 初始化:对 \(B\) 进行QR分解 \(B = Q_1 R_1\),其中 \(Q_1 \in \mathbb{R}^{n \times s}\) 列正交(\(Q_1^\top Q_1 = I_s\)),\(R_1 \in \mathbb{R}^{s \times s}\) 上三角。
- 迭代步骤(对 \(j = 1, 2, \dots, k\)):
- 计算 \(V = A Q_j\)。
- 对 \(V\) 与之前所有基向量 \(Q_1, \dots, Q_j\) 进行正交化(使用块Gram-Schmidt):
\[ H_{i,j} = Q_i^\top V \quad (\text{对 } i=1 \text{ 至 } j), \quad \tilde{V} = V - \sum_{i=1}^j Q_i H_{i,j} \]
- 对 $\tilde{V}$ 进行QR分解 $\tilde{V} = Q_{j+1} H_{j+1,j}$,其中 $H_{j+1,j} \in \mathbb{R}^{s \times s}$ 是上三角矩阵。
- 最终得到正交基矩阵 \(Q_k = [Q_1, Q_2, \dots, Q_k] \in \mathbb{R}^{n \times ks}\) 和块上Hessenberg矩阵 \(\mathcal{H}_k \in \mathbb{R}^{ks \times ks}\),满足 \(A Q_k = Q_{k+1} \mathcal{H}_k\)。
- 投影求解
- 将解近似表示为 \(X_k = Q_k Y_k\),其中 \(Y_k \in \mathbb{R}^{ks \times s}\) 是待定系数矩阵。
- 利用Galerkin条件(残差 \(R_k = B - A X_k\) 与子空间 \(\mathcal{K}_k(A, B)\) 正交):
\[ Q_k^\top (B - A Q_k Y_k) = 0 \]
代入 $B = Q_1 R_1$ 和 $A Q_k = Q_{k+1} \mathcal{H}_k$,得:
\[ Q_k^\top Q_1 R_1 - Q_k^\top Q_{k+1} \mathcal{H}_k Y_k = 0 \]
由于 $Q_k^\top Q_1 = [I_s, 0]^\top$ 且 $Q_k^\top Q_{k+1} = [0, I_{ks}]^\top$,化简为:
\[ \begin{bmatrix} I_s \\ 0 \end{bmatrix} R_1 - \mathcal{H}_k Y_k = 0 \]
即求解线性方程组 $\mathcal{H}_k Y_k = E_1 R_1$,其中 $E_1 = [I_s, 0, \dots, 0]^\top \in \mathbb{R}^{ks \times s}$。
- 解出 \(Y_k\) 后,得到近似解 \(X_k = Q_k Y_k\)。
-
残差控制与重启机制
- 残差范数计算:\(\|R_k\|_F = \|B - A X_k\|_F\) 可通过 \(\mathcal{H}_k\) 的剩余块估计,无需显式计算 \(A X_k\)。
- 若未收敛且子空间维度 \(ks\) 过大,采用重启策略:用当前解 \(X_k\) 作为初始猜测,重新构建子空间。
-
算法优势
- 减少矩阵-向量乘积次数:每次迭代计算 \(A Q_j\)(含 \(s\) 个矩阵-向量积),而非 \(s\) 次独立迭代。
- 利用右端项的相关性加速收敛(若 \(B\) 的列线性相关,子空间维度可能降低)。
总结
分块Krylov方法通过统一处理多重右端项,将计算成本从 \(O(s \cdot n)\) 降为 \(O(k \cdot n)\)(\(k\) 为块迭代次数),尤其适合右端项相关或需频繁求解相似方程组的场景(如参数化问题)。