Skip to content

共轭梯度法

Conjugate gradient method · CG method

在 Hermitian 正定系统的 Krylov 子空间中最小化能量误差,以三项递推获得共轭方向和短存储迭代。

形式陈述

共轭梯度法只以 Hermitian正定系统

Ax=b,A=A,xAx>0 (x0)

为基本问题。它等价于最小化严格凸二次能量

ϕ(x)=12xAxRe(bx).

以下递推在实数情形直接成立;复数情形的内积使用共轭转置。给初值 x0,令

r0=bAx0,p0=r0.

只要 rk0,计算

αk=rkrkpkApk,xk+1=xk+αkpk,rk+1=rkαkApk,βk=rk+1rk+1rkrk,pk+1=rk+1+βkpk.

正定性保证 pkApk>0,因此在尚未收敛时分母有效。输入应包括 SPD 矩阵或 matvec 接口、b,x0、绝对与相对容差和迭代上限;输出应包括 xk、真实残差、迭代次数、matvec 次数和退出状态。

x=A1bek=xxk,并定义

eA=eAe.

精确算术中,CG 的第 k 个近似满足

xkx0+Kk(A,r0),ekA=minxx0+Kk(A,r0)xxA.

同时,不同残差彼此正交,

rirj=0(ij),

不同搜索方向关于 A 共轭,

piApj=0(ij).

这些性质使每个新方向在不破坏旧方向最优性的情况下扩展Krylov 子空间。若相对于 r0 的最小多项式次数为 d,精确算术中至多 dn 步得到精确解;“至多 n 步”不是浮点实现的固定运行承诺。

κ2(A)=λmax/λmin,经典最坏界为

ekA2(κ2(A)1κ2(A)+1)ke0A.

该界只用谱端点,实际收敛还取决于特征值聚集和初始误差在各特征方向的分量;它是精确算术的先验上界,不应被当作逐步等式。

每步需要一次 Apk、若干内积和向量更新。对稀疏 A,工作为 O(nnz(A)+n),存储只需矩阵和少数长度 n 的向量;并行实现的全局内积归约可能比本地 SpMV 更限制扩展性。

停止可要求重算的真实残差满足

bAxk2atol+rtolb2.

还必须检查迭代上限、非有限值、非正曲率 pkApk0 和残差停滞。递推 rk+1=rkαkApk 在浮点中会逐渐偏离 bAxk+1,所以长期运行应周期性重算真实残差,并以真实残差决定最终状态。

直觉

最速下降每一步只找当前最陡方向,容易在狭长能量椭球中来回摆动。CG 让新搜索方向与旧方向在 A 内积下互不干扰:沿新方向优化时,先前方向已经取得的最优分量不会被重新破坏。于是它用短递推积累整个 Krylov 历史。

正定性在这里同时承担三项工作:能量有唯一最低点,A 真的是范数,每个步长分母保持为正。去掉这一条件后,算法公式也许还能计算几步,却不再拥有同一最小化几何和有限步理论。

例子与边界

A=(4113),b=(12),x0=0.

A 的顺序主子式为 411,所以它正定;精确解为

x=(1/117/11).

第一步有 α0=1/4,得到

x1=(1/41/2),r1=(1/21/4),β0=116.

第二步 α1=4/11,在精确算术中直接得到 x2=x。完整小型历史为

k xk |rk|2 |ek|A
0 (0,0)T 5 15/11
1 (1/4,1/2)T 5/4 5/44
2 (1/11,7/11)T 0 0

两步终止来自二维精确算术和两个可达特征方向,不意味着 binary64 必然在第 n 步得到零残差。

残差与前向误差仍是不同量。由于

rk=Aek,

ek2x2κ2(A)rk2b2.

小残差只有结合条件数才能转成前向误差保证。CG 最小化的是 A-范数误差,而常用停止准则观察的是可计算残差;报告中应保留这项区别。

非对称或不定矩阵不属于 CG 的输入域。例如

A=diag(1,1),p0=(1,1)T

给出 p0TAp0=0,第一步步长就除以零。对这类系统应选择与矩阵结构匹配的方法,不能靠给分母加 epsilon 继续冒充 CG。

浮点舍入还会让残差失去正交、方向失去 A-共轭,最终出现比精确理论更慢的收敛或停滞。重新正交化、残差替换和预条件可以改变实践表现,但都必须作为额外算法与误差路径说明。

推论与应用

椭圆 PDE 与有限元常产生大型稀疏 SPD 系统,CG 只需 SpMV、内积和向量更新,因而避免稠密因子。预条件的目标是重新塑造谱,使有效条件数下降;具体效果取决于预条件系统的定义和应用成本,不能只报告迭代次数减少。

可复现实验应同时画递推残差、定期重算的真实残差和已知参考下的前向或 A-范数误差,并记录 matvec 与内积次数。这样才能区分理论 Krylov 收敛、问题条件性和有限精度漂移。

参考资料
  • Magnus R. Hestenes and Eduard Stiefel, “Methods of Conjugate Gradients for Solving Linear Systems,” Journal of Research of the National Bureau of Standards 49, 1952.
  • Richard Barrett et al., Templates for the Solution of Linear Systems, 2nd ed., SIAM, 1994, Ch. 2.
  • Lloyd N. Trefethen and David Bau III, Numerical Linear Algebra, SIAM, 1997, Lecture 38.
  • Yousef Saad, Iterative Methods for Sparse Linear Systems, 2nd ed., SIAM, 2003, Ch. 6.