分块矩阵的广义极小残差法(GMRES)算法解多重线性方程组
问题描述
考虑多重线性方程组:
\[AX = B \]
其中 \(A \in \mathbb{R}^{n \times n}\) 是一个大型稀疏矩阵(可能非对称),\(B \in \mathbb{R}^{n \times m}\) 是包含 \(m\) 个右端项的矩阵,\(X \in \mathbb{R}^{n \times m}\) 是待求解的未知矩阵。目标是高效求解所有 \(m\) 个线性方程组 \(A x^{(j)} = b^{(j)}\)(\(j=1,\dots,m\)),同时利用分块结构提升计算效率。
解题过程
1. 分块GMRES的基本思想
标准GMRES通过Krylov子空间迭代求解单个线性方程组,但多重右端项时,若独立求解每个方程组会浪费计算资源。分块GMRES的核心思想是:
- 将多个右端项作为整体处理,构建分块Krylov子空间。
- 通过一次迭代过程同时更新所有解向量的近似值,共享子空间信息以加速收敛。
2. 分块Krylov子空间的构建
对于初始残差矩阵 \(R_0 = B - A X_0\)(\(X_0\) 为初始猜测),定义分块Krylov子空间:
\[\mathcal{K}_k(A, R_0) = \text{span}\{R_0, A R_0, A^2 R_0, \dots, A^{k-1} R_0\} \]
该子空间由所有右端项对应的残差向量及其矩阵幂的线性组合张成。
3. 分块Arnoldi过程(正交化)
通过分块Arnoldi过程生成子空间的正交基:
- 初始规范化:对残差矩阵 \(R_0\) 进行QR分解:
\[ R_0 = V_1 \Sigma_1 \]
其中 \(V_1 \in \mathbb{R}^{n \times m}\) 的列正交(\(\|V_1\|_F = 1\)),\(\Sigma_1 \in \mathbb{R}^{m \times m}\) 是上三角矩阵。
2. 迭代正交化:对于 \(j=1,2,\dots,k\):
- 计算 \(W_j = A V_j\)。
- 对 \(W_j\) 与之前的所有基向量 \(V_1, \dots, V_j\) 进行正交化(使用块Gram-Schmidt或Householder变换):
\[ H_{i,j} = V_i^T W_j \quad (\text{对于 } i=1,\dots,j) \]
\[ \tilde{V}_{j+1} = W_j - \sum_{i=1}^j V_i H_{i,j} \]
- 对 \(\tilde{V}_{j+1}\) 进行QR分解:
\[ \tilde{V}_{j+1} = V_{j+1} H_{j+1,j} \]
其中 $H_{j+1,j} \in \mathbb{R}^{m \times m}$ 是上三角矩阵,$V_{j+1}$ 是新的正交基。
4. 最小二乘问题的形成
经过 \(k\) 步迭代后,近似解 \(X_k\) 可表示为:
\[X_k = X_0 + V_k Y_k \]
其中 \(V_k = [V_1, \dots, V_k] \in \mathbb{R}^{n \times km}\) 是正交基矩阵,\(Y_k \in \mathbb{R}^{km \times m}\) 是待求系数矩阵。残差最小化问题转化为:
\[\min_{Y_k} \| B - A(X_0 + V_k Y_k) \|_F = \min_{Y_k} \| R_0 - A V_k Y_k \|_F \]
利用Arnoldi过程的关系 \(A V_k = V_{k+1} \bar{H}_k\)(\(\bar{H}_k \in \mathbb{R}^{(k+1)m \times km}\) 是块上Hessenberg矩阵),问题变为:
\[\min_{Y_k} \| V_{k+1} (\Sigma_1 e_1 - \bar{H}_k Y_k) \|_F = \min_{Y_k} \| \Sigma_1 e_1 - \bar{H}_k Y_k \|_F \]
其中 \(e_1\) 是块单位矩阵的第一块列。
5. 求解最小二乘问题
通过分块QR分解或Givens旋转将 \(\bar{H}_k\) 化为上三角矩阵,然后回代求解 \(Y_k\)。最终解为:
\[X_k = X_0 + V_k Y_k \]
6. 收敛性与重启策略
- 若残差 \(\|R_k\|_F\) 小于容忍误差,停止迭代。
- 对于大型问题,需采用重启分块GMRES:每 \(k\) 步后重置子空间,用当前解 \(X_k\) 作为新的初始猜测继续迭代,避免存储开销过大。
关键优势
- 共享子空间:多个右端项协同迭代,减少矩阵-向量乘法的总次数。
- 块运算效率:利用BLAS-3级运算(如分块矩阵乘法)提升计算强度。
- 预处理扩展:可结合分块预处理子(如块ILU)进一步加速收敛。
通过分块GMRES,多重线性方程组的求解效率显著高于独立处理每个方程组。