基于Krylov子空间的FOM算法解线性方程组
字数 2244 2025-11-25 15:47:29
基于Krylov子空间的FOM算法解线性方程组
题目描述
给定一个大型稀疏非对称线性方程组 \(A\mathbf{x} = \mathbf{b}\),其中 \(A \in \mathbb{R}^{n \times n}\) 是非奇异矩阵,\(\mathbf{b} \in \mathbb{R}^n\) 是已知向量。要求使用基于Krylov子空间的FOM(全正交化方法)算法求解未知向量 \(\mathbf{x}\)。该算法通过构造Krylov子空间的正交基,将原问题转化为一个小规模的线性方程组,从而高效求解。
解题过程
-
问题转化与初始设置
- 设初始猜测解为 \(\mathbf{x}_0\)(通常取零向量或近似解),计算初始残差 \(\mathbf{r}_0 = \mathbf{b} - A\mathbf{x}_0\)。
- 若 \(\|\mathbf{r}_0\|\) 小于预设容差,则 \(\mathbf{x}_0\) 即为解;否则进行下一步。
- 定义Krylov子空间 \(\mathcal{K}_m(A, \mathbf{r}_0) = \text{span}\{\mathbf{r}_0, A\mathbf{r}_0, \dots, A^{m-1}\mathbf{r}_0\}\),其中 \(m \ll n\) 为子空间维度。
-
Arnoldi过程生成正交基
- 通过Arnoldi迭代构造子空间 \(\mathcal{K}_m\) 的一组标准正交基 \(\{\mathbf{v}_1, \dots, \mathbf{v}_m\}\):
- 令 \(\mathbf{v}_1 = \mathbf{r}_0 / \|\mathbf{r}_0\|\)。
- 对 \(j = 1, 2, \dots, m\):
- 计算 \(\mathbf{w}_j = A\mathbf{v}_j\)。
- 对 \(i = 1\) 到 \(j\),计算投影系数 \(h_{i,j} = \mathbf{v}_i^\top \mathbf{w}_j\)。
- 正交化: \(\mathbf{w}_j \leftarrow \mathbf{w}_j - \sum_{i=1}^j h_{i,j} \mathbf{v}_i\)。
- 计算 \(h_{j+1,j} = \|\mathbf{w}_j\|\),若 \(h_{j+1,j} = 0\) 则提前终止。
- 令 \(\mathbf{v}_{j+1} = \mathbf{w}_j / h_{j+1,j}\)。
- 得到正交矩阵 \(V_m = [\mathbf{v}_1, \dots, \mathbf{v}_m]\) 和上Hessenberg矩阵 \(H_m \in \mathbb{R}^{m \times m}\),满足 \(AV_m = V_m H_m + h_{m+1,m} \mathbf{v}_{m+1} \mathbf{e}_m^\top\),其中 \(\mathbf{e}_m\) 是第 \(m\) 个单位向量。
- 通过Arnoldi迭代构造子空间 \(\mathcal{K}_m\) 的一组标准正交基 \(\{\mathbf{v}_1, \dots, \mathbf{v}_m\}\):
-
构建并求解投影系统
- 在子空间 \(\mathcal{K}_m\) 中寻求近似解 \(\mathbf{x}_m = \mathbf{x}_0 + V_m \mathbf{y}_m\),其中 \(\mathbf{y}_m \in \mathbb{R}^m\)。
- 根据残差正交性条件(Galerkin条件)\(\mathbf{r}_m \perp \mathcal{K}_m\),导出方程:
\[ V_m^\top (\mathbf{b} - A\mathbf{x}_m) = 0 \implies V_m^\top A V_m \mathbf{y}_m = V_m^\top \mathbf{r}_0. \]
- 代入Arnoldi关系 \(V_m^\top A V_m = H_m\) 和 \(V_m^\top \mathbf{r}_0 = \|\mathbf{r}_0\| \mathbf{e}_1\),得到小规模线性方程组:
\[ H_m \mathbf{y}_m = \|\mathbf{r}_0\| \mathbf{e}_1. \]
- 解此方程组得 \(\mathbf{y}_m\),进而计算近似解 \(\mathbf{x}_m = \mathbf{x}_0 + V_m \mathbf{y}_m\)。
- 收敛性判断与重启策略
- 计算残差 \(\mathbf{r}_m = \mathbf{b} - A\mathbf{x}_m\)。若 \(\|\mathbf{r}_m\|\) 满足容差要求,则输出 \(\mathbf{x}_m\);否则可采用重启策略:以当前 \(\mathbf{x}_m\) 作为新的初始猜测,重复上述过程直至收敛。
关键点总结
- FOM利用Krylov子空间和Arnoldi过程将大规模问题降维。
- Galerkin条件确保残差与子空间正交,导出小规模方程组。
- 适用于非对称矩阵,但需注意重启以避免存储和计算成本随 \(m\) 增大而显著增加。