基于Krylov子空间的COCR算法解复对称线性方程组
字数 4176 2025-12-20 18:54:32

基于Krylov子空间的COCR算法解复对称线性方程组


题目描述

我们考虑求解一个大规模稀疏的复对称线性方程组

\[A\mathbf{x} = \mathbf{b} \]

其中 \(A \in \mathbb{C}^{n \times n}\) 是一个复对称矩阵(即 \(A = A^T\),注意不是 Hermitian 矩阵,因为不要求共轭转置相等),且通常 \(n\) 很大,\(A\) 稀疏。\(b \in \mathbb{C}^n\) 是已知向量,我们需要求解 \(x \in \mathbb{C}^n\)

这类问题出现在许多工程与科学计算领域,例如频域波动方程离散、电磁场计算、量子力学等。因为矩阵是复对称的,传统的共轭梯度法(CG)不适用(CG 要求矩阵是 Hermitian 正定),而 GMRES 等通用方法又可能效率不高。COCR(Conjugate Orthogonal Conjugate Residual)算法正是针对复对称矩阵设计的一种 Krylov 子空间方法,它通过短递归实现,内存开销小,且具有残差正交性。


解题过程循序渐进讲解

我们一步步推导 COCR 算法的原理和迭代格式。

第一步:问题与 Krylov 子空间框架

对于复对称矩阵 \(A\),我们希望构造迭代解序列 \(\{x_k\}\),使得第 \(k\) 步的解 \(x_k\) 位于仿射空间:

\[x_k \in x_0 + \mathcal{K}_k(A, r_0) \]

其中初始残差 \(r_0 = b - A x_0\),Krylov 子空间:

\[\mathcal{K}_k(A, r_0) = \mathrm{span}\{r_0, A r_0, \dots, A^{k-1} r_0\}. \]

COCR 要求残差向量 \(r_k = b - A x_k\) 满足 Galerkin 条件(也称为正交条件):

\[r_k \perp \mathcal{K}_k(A, r_0) \]

但注意,这里的“垂直”是在标准复内积下吗?不是的,因为 \(A\) 不是 Hermitian,我们不能直接用标准内积空间的正交性。实际上,COCR 算法要求残差满足:

\[r_k \perp A \mathcal{K}_k(A, r_0) \]

这等价于:

\[r_k \perp \mathcal{K}_k(A, A r_0) \]

这称为正交残差条件(与 MINRES 对实对称矩阵的条件类似),但这里针对复对称矩阵设计。


第二步:Lanczos 双正交化与短递归

由于 \(A\) 是复对称,我们考虑 Lanczos 双正交化过程。定义两个 Krylov 子空间:

\[\mathcal{K}_k(A, r_0) \quad \text{和} \quad \mathcal{K}_k(A, A r_0) \]

我们需要构造基向量 \(\{p_0, p_1, \dots, p_{k-1}\}\)\(\{s_0, s_1, \dots, s_{k-1}\}\),使得它们满足双正交性:

\[(p_i, A p_j) = 0, \quad i \ne j \]

实际上,COCR 采用的是一种特殊的短递归三项递推,类似于对称 Lanczos 过程,但由于矩阵对称不 Hermitian,递归中会出现两个序列:

\[A P_k = S_k T_k \quad \text{或类似形式} \]

其中 \(P_k = [p_0, \dots, p_{k-1}]\), \(S_k = [s_0, \dots, s_{k-1}]\) 是双正交基,\(T_k\) 是三对角矩阵。

推导细节(简化):
设初始搜索方向 \(p_0 = r_0\),定义 \(s_0 = A p_0\)。迭代中维持:

\[r_k \perp \mathrm{span}\{s_0, \dots, s_{k-1}\} \]

并且搜索方向满足 \(A P_k = S_k\) 的某种三对角化关系。通过短递归得到:

\[p_{k} = r_{k} + \beta_k p_{k-1} \]

\[ s_{k} = A p_{k} = A r_{k} + \beta_k s_{k-1} \]

然后 \(x_{k+1} = x_k + \alpha_k p_k\)\(r_{k+1} = r_k - \alpha_k A p_k\)


第三步:系数确定(正交条件)

利用正交条件 \(r_{k+1} \perp s_j\)\(j=0,\dots,k\),可得系数公式。
\(r_{k+1} = r_k - \alpha_k s_k\),要求 \((r_{k+1}, s_k) = 0\) 得:

\[\alpha_k = \frac{(r_k, s_k)}{(s_k, s_k)} \]

为了保证 \(r_{k+1} \perp s_{k-1}\),需要适当选择 \(\beta_k\)。由 \(s_k = A r_k + \beta_k s_{k-1}\)\(r_{k+1} = r_k - \alpha_k s_k\),代入正交条件 \((r_{k+1}, s_{k-1}) = 0\) 可推导出:

\[\beta_k = -\frac{(A r_k, s_{k-1})}{(s_{k-1}, s_{k-1})} \]

但为了短递归,通常会利用 \(A\) 对称性简化表达式。
经推导(Sogabe 和 Zhang 在 2007 年提出的 COCR 算法),得到更简洁的系数:

\[\alpha_k = \frac{(r_k, r_k)}{(A p_k, p_k)} \]

\[ \beta_k = \frac{(r_{k+1}, r_{k+1})}{(r_k, r_k)} \]

注意,这要求内积是标准复内积 \((u,v) = u^T v\)(不取共轭!),因为 \(A\) 是对称非 Hermitian,所以 \((A p_k, p_k) = p_k^T A p_k\) 是实数吗?不一定,但算法仍然有效,因为正交条件是在这个内积下定义的。

实际上,标准 COCR 算法采用的内积是 \((u,v) = u^T v\)(不共轭),因此称为“复内积”但实为双线性型。
在复对称条件下,有 \((A u, v) = (u, A v)\) 对此内积成立。


第四步:COCR 算法迭代格式

给定初始解 \(x_0\),计算 \(r_0 = b - A x_0\),设 \(p_0 = r_0\)
\(k=0,1,2,\dots\) 直到收敛,执行:

  1. 计算 \(A p_k\)
  2. 计算 \(\alpha_k = \frac{(r_k, r_k)}{(A p_k, p_k)}\),其中内积 \((x,y) = x^T y\)
  3. 更新解:\(x_{k+1} = x_k + \alpha_k p_k\)
  4. 更新残差:\(r_{k+1} = r_k - \alpha_k A p_k\)
  5. 计算 \(\beta_k = \frac{(r_{k+1}, r_{k+1})}{(r_k, r_k)}\)
  6. 更新搜索方向:\(p_{k+1} = r_{k+1} + \beta_k p_k\)

注意:残差范数 \((r_k, r_k)\) 在复数下不一定是实数正数,但算法中直接作复数运算,迭代中会保持正交性。


第五步:算法性质

  • 短递归:只需存储几个向量,类似 CG 法。
  • 有限步终止:理论上在 \(n\) 步内得到精确解(忽略舍入误差)。
  • 残差正交性:满足 \(r_k \perp A \mathcal{K}_k(A, r_0)\),即 \((r_k, A p_j) = 0\)\(j < k\)
  • 适用于复对称矩阵,不要求正定。
  • 可能发生“严重中断”(serious breakdown),当 \((A p_k, p_k) = 0\) 时算法失效,但概率低,有修补方法。

第六步:与 COCG 的关系

COCG(Conjugate Orthogonal CG)算法也是解复对称线性方程组的著名方法,但 COCG 要求矩阵是复对称正定(即 \(x^T A x\) 的实部正定),而 COCR 是 COCG 的变体,更类似 MINRES 的思想,不要求正定性,但需要复对称性。


第七步:预处理

为了加速收敛,可采用预处理技术。设预处理子 \(M \approx A\),且 \(M\) 容易求逆,将原方程转换为:

\[M^{-1} A x = M^{-1} b \]

但要注意,预处理后矩阵 \(M^{-1} A\) 一般不再是复对称的。为了保持对称性,可采用分裂预处理形式,比如:

\[M = L L^T \quad \text{(不完全复对称分解)} \]

然后解方程:

\[L^{-1} A L^{-T} \tilde{x} = L^{-1} b, \quad x = L^{-T} \tilde{x} \]

此时 \(L^{-1} A L^{-T}\) 仍为复对称。在算法中应用预处理时,需在迭代中替换内积和矩阵向量乘。

预处理 COCR 算法称为 PCOCR,形式与 COCR 相似,但内积和向量需替换为预处理空间中的相应量。


总结

COCR 算法是一种针对复对称线性方程组设计的 Krylov 子空间迭代法,具有短递归、低存储、残差正交等特点,是 CG 方法在复对称情形的自然推广。通过合理选择内积和正交条件,保证了迭代的稳定性和有限步收敛性。在实际应用中,常结合预处理技术加速收敛。

基于Krylov子空间的COCR算法解复对称线性方程组 题目描述 我们考虑求解一个大规模稀疏的 复对称线性方程组 : \[ A\mathbf{x} = \mathbf{b} \] 其中 \(A \in \mathbb{C}^{n \times n}\) 是一个 复对称矩阵 (即 \(A = A^T\),注意不是 Hermitian 矩阵,因为不要求共轭转置相等),且通常 \(n\) 很大,\(A\) 稀疏。\(b \in \mathbb{C}^n\) 是已知向量,我们需要求解 \(x \in \mathbb{C}^n\)。 这类问题出现在许多工程与科学计算领域,例如频域波动方程离散、电磁场计算、量子力学等。因为矩阵是复对称的,传统的共轭梯度法(CG)不适用(CG 要求矩阵是 Hermitian 正定),而 GMRES 等通用方法又可能效率不高。COCR(Conjugate Orthogonal Conjugate Residual)算法正是针对复对称矩阵设计的一种 Krylov 子空间方法,它通过短递归实现,内存开销小,且具有残差正交性。 解题过程循序渐进讲解 我们一步步推导 COCR 算法的原理和迭代格式。 第一步:问题与 Krylov 子空间框架 对于复对称矩阵 \(A\),我们希望构造迭代解序列 \(\{x_ k\}\),使得第 \(k\) 步的解 \(x_ k\) 位于仿射空间: \[ x_ k \in x_ 0 + \mathcal{K}_ k(A, r_ 0) \] 其中初始残差 \(r_ 0 = b - A x_ 0\),Krylov 子空间: \[ \mathcal{K}_ k(A, r_ 0) = \mathrm{span}\{r_ 0, A r_ 0, \dots, A^{k-1} r_ 0\}. \] COCR 要求残差向量 \(r_ k = b - A x_ k\) 满足 Galerkin 条件(也称为正交条件): \[ r_ k \perp \mathcal{K}_ k(A, r_ 0) \] 但注意,这里的“垂直”是在标准复内积下吗?不是的,因为 \(A\) 不是 Hermitian,我们不能直接用标准内积空间的正交性。实际上,COCR 算法要求残差满足: \[ r_ k \perp A \mathcal{K}_ k(A, r_ 0) \] 这等价于: \[ r_ k \perp \mathcal{K}_ k(A, A r_ 0) \] 这称为 正交残差条件 (与 MINRES 对实对称矩阵的条件类似),但这里针对复对称矩阵设计。 第二步:Lanczos 双正交化与短递归 由于 \(A\) 是复对称,我们考虑 Lanczos 双正交化过程。定义两个 Krylov 子空间: \[ \mathcal{K} k(A, r_ 0) \quad \text{和} \quad \mathcal{K} k(A, A r_ 0) \] 我们需要构造基向量 \(\{p_ 0, p_ 1, \dots, p {k-1}\}\) 和 \(\{s_ 0, s_ 1, \dots, s {k-1}\}\),使得它们满足双正交性: \[ (p_ i, A p_ j) = 0, \quad i \ne j \] 实际上,COCR 采用的是一种特殊的短递归三项递推,类似于对称 Lanczos 过程,但由于矩阵对称不 Hermitian,递归中会出现两个序列: \[ A P_ k = S_ k T_ k \quad \text{或类似形式} \] 其中 \(P_ k = [ p_ 0, \dots, p_ {k-1}]\), \(S_ k = [ s_ 0, \dots, s_ {k-1}]\) 是双正交基,\(T_ k\) 是三对角矩阵。 推导细节(简化): 设初始搜索方向 \(p_ 0 = r_ 0\),定义 \(s_ 0 = A p_ 0\)。迭代中维持: \[ r_ k \perp \mathrm{span}\{s_ 0, \dots, s_ {k-1}\} \] 并且搜索方向满足 \(A P_ k = S_ k\) 的某种三对角化关系。通过短递归得到: \[ p_ {k} = r_ {k} + \beta_ k p_ {k-1} \] \[ s_ {k} = A p_ {k} = A r_ {k} + \beta_ k s_ {k-1} \] 然后 \(x_ {k+1} = x_ k + \alpha_ k p_ k\),\(r_ {k+1} = r_ k - \alpha_ k A p_ k\)。 第三步:系数确定(正交条件) 利用正交条件 \(r_ {k+1} \perp s_ j\) 对 \(j=0,\dots,k\),可得系数公式。 由 \(r_ {k+1} = r_ k - \alpha_ k s_ k\),要求 \((r_ {k+1}, s_ k) = 0\) 得: \[ \alpha_ k = \frac{(r_ k, s_ k)}{(s_ k, s_ k)} \] 为了保证 \(r_ {k+1} \perp s_ {k-1}\),需要适当选择 \(\beta_ k\)。由 \(s_ k = A r_ k + \beta_ k s_ {k-1}\) 和 \(r_ {k+1} = r_ k - \alpha_ k s_ k\),代入正交条件 \((r_ {k+1}, s_ {k-1}) = 0\) 可推导出: \[ \beta_ k = -\frac{(A r_ k, s_ {k-1})}{(s_ {k-1}, s_ {k-1})} \] 但为了短递归,通常会利用 \(A\) 对称性简化表达式。 经推导(Sogabe 和 Zhang 在 2007 年提出的 COCR 算法),得到更简洁的系数: \[ \alpha_ k = \frac{(r_ k, r_ k)}{(A p_ k, p_ k)} \] \[ \beta_ k = \frac{(r_ {k+1}, r_ {k+1})}{(r_ k, r_ k)} \] 注意,这要求内积是标准复内积 \((u,v) = u^T v\)(不取共轭!),因为 \(A\) 是对称非 Hermitian,所以 \((A p_ k, p_ k) = p_ k^T A p_ k\) 是实数吗?不一定,但算法仍然有效,因为正交条件是在这个内积下定义的。 实际上,标准 COCR 算法采用的内积是 \((u,v) = u^T v\)(不共轭),因此称为“复内积”但实为双线性型。 在复对称条件下,有 \((A u, v) = (u, A v)\) 对此内积成立。 第四步:COCR 算法迭代格式 给定初始解 \(x_ 0\),计算 \(r_ 0 = b - A x_ 0\),设 \(p_ 0 = r_ 0\)。 对 \(k=0,1,2,\dots\) 直到收敛,执行: 计算 \(A p_ k\)。 计算 \(\alpha_ k = \frac{(r_ k, r_ k)}{(A p_ k, p_ k)}\),其中内积 \((x,y) = x^T y\)。 更新解:\(x_ {k+1} = x_ k + \alpha_ k p_ k\)。 更新残差:\(r_ {k+1} = r_ k - \alpha_ k A p_ k\)。 计算 \(\beta_ k = \frac{(r_ {k+1}, r_ {k+1})}{(r_ k, r_ k)}\)。 更新搜索方向:\(p_ {k+1} = r_ {k+1} + \beta_ k p_ k\)。 注意:残差范数 \((r_ k, r_ k)\) 在复数下不一定是实数正数,但算法中直接作复数运算,迭代中会保持正交性。 第五步:算法性质 短递归 :只需存储几个向量,类似 CG 法。 有限步终止 :理论上在 \(n\) 步内得到精确解(忽略舍入误差)。 残差正交性 :满足 \(r_ k \perp A \mathcal{K}_ k(A, r_ 0)\),即 \((r_ k, A p_ j) = 0\) 对 \(j < k\)。 适用于复对称矩阵,不要求正定。 可能发生“严重中断”(serious breakdown),当 \((A p_ k, p_ k) = 0\) 时算法失效,但概率低,有修补方法。 第六步:与 COCG 的关系 COCG(Conjugate Orthogonal CG)算法也是解复对称线性方程组的著名方法,但 COCG 要求矩阵是复对称正定(即 \(x^T A x\) 的实部正定),而 COCR 是 COCG 的变体,更类似 MINRES 的思想,不要求正定性,但需要复对称性。 第七步:预处理 为了加速收敛,可采用预处理技术。设预处理子 \(M \approx A\),且 \(M\) 容易求逆,将原方程转换为: \[ M^{-1} A x = M^{-1} b \] 但要注意,预处理后矩阵 \(M^{-1} A\) 一般不再是复对称的。为了保持对称性,可采用 分裂预处理 形式,比如: \[ M = L L^T \quad \text{(不完全复对称分解)} \] 然后解方程: \[ L^{-1} A L^{-T} \tilde{x} = L^{-1} b, \quad x = L^{-T} \tilde{x} \] 此时 \(L^{-1} A L^{-T}\) 仍为复对称。在算法中应用预处理时,需在迭代中替换内积和矩阵向量乘。 预处理 COCR 算法称为 PCOCR ,形式与 COCR 相似,但内积和向量需替换为预处理空间中的相应量。 总结 COCR 算法是一种针对 复对称线性方程组 设计的 Krylov 子空间迭代法,具有短递归、低存储、残差正交等特点,是 CG 方法在复对称情形的自然推广。通过合理选择内积和正交条件,保证了迭代的稳定性和有限步收敛性。在实际应用中,常结合预处理技术加速收敛。