分块矩阵的对称逐次超松弛(SSOR)预处理子构造及其在Krylov子空间方法中的应用
题目描述
在求解大规模稀疏线性方程组 \(Ax = b\) 时,特别是当矩阵 \(A\) 对称正定但条件数较大时,Krylov子空间方法(如共轭梯度法CG)的收敛速度可能很慢。预处理技术是加速其收敛的关键。对称逐次超松弛(Symmetric Successive Over-Relaxation, SSOR)是一种经典的分裂迭代法,其迭代矩阵可以构造出高效的预处理子。本题目将详细讲解如何基于SSOR迭代的思想,构造一个对称正定的预处理矩阵 \(M\),并将其应用于预处理的共轭梯度法(PCG)中。重点在于理解SSOR预处理子的构造过程、其对称正定性质的证明,以及如何将其高效地整合到迭代求解过程中。
解题过程
我们假设要求解的线性方程组为 \(Ax = b\),其中 \(A \in \mathbb{R}^{n \times n}\) 是对称正定(SPD)的稀疏矩阵。目标是构造一个预处理子 \(M\),使得求解等价系统 \(M^{-1} A x = M^{-1} b\) 的Krylov子空间方法收敛更快。
第一步:回顾SSOR迭代法的矩阵分裂
SSOR迭代源于求解 \(Ax = b\) 的定点迭代。首先,将矩阵 \(A\) 分裂为:
\[A = D - L - L^T \]
其中:
- \(D\) 是 \(A\) 的对角部分(为对角矩阵,且由于 \(A\) 正定,其对角元 \(d_{ii} > 0\))。
- \(-L\) 是 \(A\) 的严格下三角部分(即 \(L\) 是严格下三角矩阵,包含 \(A\) 的下三角非对角元的相反数)。
- \(-L^T\) 是 \(A\) 的严格上三角部分。
注意这个分裂使得 \(A = D - L - L^T\)。为了进行松弛迭代,我们引入一个松弛因子 \(\omega\),通常满足 \(0 < \omega < 2\),以保证收敛。
一次完整的SSOR迭代分为前向SOR和后向SOR两步:
- 前向SOR(或SOR步):
\[ (D - \omega L) x^{(k+\frac{1}{2})} = \omega b + [(1-\omega)D + \omega L^T] x^{(k)} \]
- 后向SOR(或对称的SOR步):
\[ (D - \omega L^T) x^{(k+1)} = \omega b + [(1-\omega)D + \omega L] x^{(k+\frac{1}{2})} \]
第二步:从SSOR迭代矩阵导出预处理子 \(M\)
我们不直接使用SSOR进行迭代求解,而是利用其迭代矩阵来构造一个预处理子。从上面的两步迭代中,可以消去中间量 \(x^{(k+\frac{1}{2})}\),得到从 \(x^{(k)}\) 到 \(x^{(k+1)}\) 的迭代关系:
\[x^{(k+1)} = \mathcal{H}_{\text{SSOR}} x^{(k)} + c \]
其中迭代矩阵 \(\mathcal{H}_{\text{SSOR}}\) 为:
\[\mathcal{H}_{\text{SSOR}} = (D - \omega L^T)^{-1} [(1-\omega)D + \omega L] (D - \omega L)^{-1} [(1-\omega)D + \omega L^T] \]
而常数项 \(c\) 与 \(b\) 有关。我们关注的是与迭代矩阵相关的“分裂矩阵”。经典的预处理子 \(M_{\text{SSOR}}\) 通常定义为使得一次SSOR迭代的误差传播矩阵为 \(I - M_{\text{SSOR}}^{-1}A\)。经过推导,可以得到一个更简洁、更常用的对称正定预处理子形式:
\[M_{\text{SSOR}} = \frac{1}{\omega(2-\omega)} (D - \omega L) D^{-1} (D - \omega L^T) \]
让我们验证其合理性。从SSOR迭代的误差方程出发,最终得到的预处理子应满足:一次SSOR迭代等价于用 \(M_{\text{SSOR}}\) 作为预处理子的Richardson迭代。\(M_{\text{SSOR}}\) 的这种形式确保了其对称性和正定性,这对于在CG中使用至关重要。
第三步:验证 \(M_{\text{SSOR}}\) 的对称正定性
- 对称性:由于 \(D\) 是对角矩阵,所以 \(D^T = D\)。\(L\) 是严格下三角矩阵,所以 \(L^T\) 是严格上三角矩阵。因此,\((D - \omega L^T)^T = D - \omega L\)。所以:
\[ M_{\text{SSOR}}^T = \frac{1}{\omega(2-\omega)} [(D - \omega L) D^{-1} (D - \omega L^T)]^T = \frac{1}{\omega(2-\omega)} (D - \omega L) D^{-1} (D - \omega L^T) = M_{\text{SSOR}} \]
注意,在转置时,因为 $D^{-1}$ 是对角阵,所以 $(D^{-1})^T = D^{-1}$。因此 $M_{\text{SSOR}}$ 是对称的。
- 正定性:我们需要证明对于任意非零向量 \(z \in \mathbb{R}^n\),有 \(z^T M_{\text{SSOR}} z > 0\)。
首先,因为 \(A\) 对称正定,其对角元 \(d_{ii} > 0\),所以 \(D\) 是正定对角阵,\(D^{-1}\) 也是正定的。
定义向量 \(y = (D - \omega L^T) z\)。由于 \(D - \omega L^T\) 是一个下三角矩阵(注意 \(L^T\) 是严格上三角,但前面有负号,所以 \(-\omega L^T\) 是严格下三角部分,\(D\) 是对角线,所以整体是下三角矩阵),并且其对角线元素就是 \(D\) 的对角元 \(d_{ii} > 0\),因此它是非奇异的。所以对于任意非零 \(z\),都有 \(y \neq 0\)。
那么:
\[ z^T M_{\text{SSOR}} z = \frac{1}{\omega(2-\omega)} z^T (D - \omega L) D^{-1} (D - \omega L^T) z = \frac{1}{\omega(2-\omega)} y^T D^{-1} y \]
因为 $D^{-1}$ 是正定对角阵,所以 $y^T D^{-1} y > 0$ 对于任意非零 $y$ 成立。另外,为了保证系数为正,我们需要 $0 < \omega < 2$,这样 $\omega(2-\omega) > 0$。因此,整个表达式 $> 0$,$M_{\text{SSOR}}$ 是正定的。
第四步:在预处理的共轭梯度法(PCG)中的应用
在PCG算法中,核心步骤是需要计算预处理子 \(M\) 作用在一个向量 \(z\) 上的结果,即求解形式为 \(M p = z\) 的方程组。对于SSOR预处理子 \(M_{\text{SSOR}}\),我们有:
\[M_{\text{SSOR}} p = \frac{1}{\omega(2-\omega)} (D - \omega L) D^{-1} (D - \omega L^T) p = z \]
我们可以通过两次前/后向三角求解来高效计算 \(p = M_{\text{SSOR}}^{-1} z\):
-
前向代入:求解下三角系统 \((D - \omega L) y = \omega(2-\omega) z\),得到中间向量 \(y\)。
- 因为 \(D - \omega L\) 是下三角矩阵,这个求解过程可以从第一个方程开始顺序代入,计算复杂度为 \(O(\text{nnz})\),其中 \(\text{nnz}\) 是 \(A\) 的非零元个数。
-
对角缩放:计算 \(v = D^{-1} y\)。由于 \(D\) 是对角矩阵,这只需要 \(O(n)\) 次操作。
-
后向代入:求解上三角系统 \((D - \omega L^T) p = v\),得到最终的解 \(p\)。
- 因为 \(D - \omega L^T\) 是上三角矩阵,这个求解过程可以从最后一个方程开始反向代入,计算复杂度也是 \(O(\text{nnz})\)。
因此,每次PCG迭代中应用一次SSOR预处理(即求解一次 \(M_{\text{SSOR}} p = z\))的代价大约是两次稀疏三角求解,这与矩阵 \(A\) 的稀疏结构密切相关,但通常与一次矩阵-向量乘法的代价同阶。
第五步:松弛因子 \(\omega\) 的选择
参数 \(\omega\) 的选择会影响预处理的效果。理论上,存在一个最优的 \(\omega_{\text{opt}}\) 使得预处理后矩阵 \(M_{\text{SSOR}}^{-1} A\) 的条件数最小,从而CG迭代次数最少。然而,\(\omega_{\text{opt}}\) 通常难以精确计算,它依赖于矩阵 \(A\) 的特征值。在实际应用中,常常采用以下策略:
- 经验值:对于许多问题,取 \(\omega = 1\) 对应于对称高斯-赛德尔(Symmetric Gauss-Seidel, SGS)预处理子,这常常是一个简单有效的选择,此时 \(M_{\text{SGS}} = (D - L) D^{-1} (D - L^T)\)。
- 试探法:可以通过少量试验,测试不同 \(\omega\)(例如在区间 \((1.0, 1.8)\) 内)对PCG迭代次数的影响,选择一个近似最优值。
- 理论估计:对于某些具有特定性质的矩阵(如来自某些偏微分方程离散化的矩阵),可能有理论公式可以估计 \(\omega_{\text{opt}}\)。
总结
分块矩阵的SSOR预处理子构造是一个将经典迭代法思想转化为高效预处理技术的典型例子。其核心步骤包括:
- 基于矩阵分裂 \(A = D - L - L^T\) 和松弛因子 \(\omega\),构造出对称正定的预处理矩阵 \(M_{\text{SSOR}} = \frac{1}{\omega(2-\omega)}(D - \omega L)D^{-1}(D - \omega L^T)\)。
- 在PCG等Krylov子空间方法中,每次迭代需要计算 \(M_{\text{SSOR}}^{-1} z\),这可以通过一次前向代入、一次对角缩放和一次后向代入高效完成,计算成本与矩阵-向量乘法相当。
- 松弛因子 \(\omega\) 的选择会影响预处理效果,通常需要通过试验或基于问题特性进行选取。
该预处理子的优势在于其形式简单、对称正定,且能有效改善原矩阵 \(A\) 的谱分布,从而显著加速Krylov子空间方法的收敛。