基于Krylov子空间的BICG算法解非对称线性方程组
题目描述
考虑求解大型稀疏非对称线性方程组 \(A\mathbf{x} = \mathbf{b}\),其中 \(A \in \mathbb{R}^{n \times n}\) 是非对称矩阵,\(\mathbf{b} \in \mathbb{R}^n\) 是已知向量。由于矩阵规模大且稀疏,直接法(如LU分解)计算成本高,需采用迭代法。双共轭梯度法(BiConjugate Gradient, BiCG)是一种基于Krylov子空间的投影方法,通过构建两个相互正交的Krylov子空间,将残差向量投影到这些子空间上求解。BiCG适用于非对称矩阵,但可能存在收敛不稳定问题。
解题过程
- 问题转化与投影框架
BiCG的目标是找到解 \(\mathbf{x}_k \in \mathbb{R}^n\),使得残差 \(\mathbf{r}_k = \mathbf{b} - A\mathbf{x}_k\) 同时正交于两个Krylov子空间:- 主空间:\(\mathcal{K}_k(A, \mathbf{r}_0) = \text{span}\{\mathbf{r}_0, A\mathbf{r}_0, \dots, A^{k-1}\mathbf{r}_0\}\)
- 对偶空间:\(\mathcal{K}_k(A^\top, \tilde{\mathbf{r}}_0) = \text{span}\{\tilde{\mathbf{r}}_0, A^\top\tilde{\mathbf{r}}_0, \dots, (A^\top)^{k-1}\tilde{\mathbf{r}}_0\}\)
其中 \(\tilde{\mathbf{r}}_0\) 是初始对偶残差,通常随机选择(如 \(\tilde{\mathbf{r}}_0 = \mathbf{r}_0\))。正交条件表示为:
\[ \mathbf{r}_k \perp \mathcal{K}_k(A^\top, \tilde{\mathbf{r}}_0) \quad \text{和} \quad \tilde{\mathbf{r}}_k \perp \mathcal{K}_k(A, \mathbf{r}_0) \]
这里 \(\tilde{\mathbf{r}}_k\) 是对偶残差,满足 \(\tilde{\mathbf{r}}_k = \tilde{\mathbf{b}} - A^\top \tilde{\mathbf{x}}_k\)(虚拟系统)。
- 双Lanczos过程构建基向量
BiCG通过双Lanczos过程生成两组基向量 \(\{\mathbf{p}_0, \dots, \mathbf{p}_{k-1}\}\) 和 \(\{\tilde{\mathbf{p}}_0, \dots, \tilde{\mathbf{p}}_{k-1}\}\),分别张成主和对偶Krylov子空间。过程如下:- 初始化:
\[ \mathbf{p}_0 = \mathbf{r}_0, \quad \tilde{\mathbf{p}}_0 = \tilde{\mathbf{r}}_0 \]
- 迭代步骤(对于 \(j = 0, 1, \dots, k-1\)):
- 计算系数 \(\alpha_j = \frac{\tilde{\mathbf{r}}_j^\top \mathbf{r}_j}{\tilde{\mathbf{p}}_j^\top A \mathbf{p}_j}\)(确保分母非零)。
- 更新解和残差:
\[ \mathbf{x}_{j+1} = \mathbf{x}_j + \alpha_j \mathbf{p}_j, \quad \mathbf{r}_{j+1} = \mathbf{r}_j - \alpha_j A \mathbf{p}_j \]
\[ \tilde{\mathbf{x}}_{j+1} = \tilde{\mathbf{x}}_j + \alpha_j \tilde{\mathbf{p}}_j, \quad \tilde{\mathbf{r}}_{j+1} = \tilde{\mathbf{r}}_j - \alpha_j A^\top \tilde{\mathbf{p}}_j \]
3. 计算系数 $ \beta_j = \frac{\tilde{\mathbf{r}}_{j+1}^\top \mathbf{r}_{j+1}}{\tilde{\mathbf{r}}_j^\top \mathbf{r}_j} $。
4. 更新搜索方向:
\[ \mathbf{p}_{j+1} = \mathbf{r}_{j+1} + \beta_j \mathbf{p}_j, \quad \tilde{\mathbf{p}}_{j+1} = \tilde{\mathbf{r}}_{j+1} + \beta_j \tilde{\mathbf{p}}_j \]
此过程确保 \(\mathbf{r}_i \perp \tilde{\mathbf{r}}_j\) 和 \(\mathbf{p}_i \perp A^\top \tilde{\mathbf{p}}_j\)(对 \(i \neq j\))。
- 算法流程与收敛性
BiCG的完整步骤包括:- 输入:矩阵 \(A\),向量 \(\mathbf{b}\),初始解 \(\mathbf{x}_0\),容差 \(\varepsilon\)。
- 初始化残差和对偶残差:
\[ \mathbf{r}_0 = \mathbf{b} - A\mathbf{x}_0, \quad \tilde{\mathbf{r}}_0 = \mathbf{r}_0 \ (\text{或随机向量}) \]
- 循环直到 \(\|\mathbf{r}_k\| < \varepsilon\):
执行双Lanczos迭代,更新解和残差。 - 输出:近似解 \(\mathbf{x}_k\)。
BiCG在有限步内(最多 \(n\) 步)得到精确解,但实际中因舍入误差可能提前终止。若 \(A\) 正定,BiCG退化为共轭梯度法(CG);否则可能遇到分母为零(“中断”),需重启或改用BiCGSTAB等稳定变体。
- 优缺点分析
- 优点:无需矩阵对称性,比GMRES节省存储(仅需保留几个向量)。
- 缺点:收敛性依赖 \(A\) 的谱分布,对偶系统增加计算成本,可能出现中断。