MINIBLOG

Blog Note Tags Links About
Home Search
Apr 7, 2026
miniyuan

解线性方程组的迭代法(二次函数极值,最速下降法,共轭梯度法)


迭代法的一般框架

Richardson 方法

对于线性方程组 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}Ax=b,将系数矩阵分解为:

A=P−Q\mathbf{A} = \mathbf{P} - \mathbf{Q}A=P−Q

其中 P\mathbf{P}P 为可逆矩阵,则可建立迭代格式:

Px(k+1)=Qx(k)+b⇒x(k+1)=Mx(k)+g\mathbf{P}\mathbf{x}^{(k+1)} = \mathbf{Q}\mathbf{x}^{(k)} + \mathbf{b} \quad \Rightarrow \quad \mathbf{x}^{(k+1)} = \mathbf{M}\mathbf{x}^{(k)} + \mathbf{g}Px(k+1)=Qx(k)+b⇒x(k+1)=Mx(k)+g

其中 M=P−1Q\mathbf{M} = \mathbf{P}^{-1}\mathbf{Q}M=P−1Q 为迭代矩阵,g=P−1b\mathbf{g} = \mathbf{P}^{-1}\mathbf{b}g=P−1b 为常数项。

进一步改写为:

x(k+1)=x(k)+P−1(b−Ax(k))=x(k)+P−1r(k)\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \mathbf{P}^{-1}(\mathbf{b} - \mathbf{A}\mathbf{x}^{(k)}) = \mathbf{x}^{(k)} + \mathbf{P}^{-1}\mathbf{r}^{(k)}x(k+1)=x(k)+P−1(b−Ax(k))=x(k)+P−1r(k)

其中 残差向量 定义为:

r(k)≡b−Ax(k)\mathbf{r}^{(k)} \equiv \mathbf{b} - \mathbf{A}\mathbf{x}^{(k)}r(k)≡b−Ax(k)

引入松弛因子 ω(k)\omega^{(k)}ω(k),得到更一般的 Richardson 迭代格式:

x(k+1)=x(k)+ω(k)P−1r(k)\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \omega^{(k)} \mathbf{P}^{-1} \mathbf{r}^{(k)}x(k+1)=x(k)+ω(k)P−1r(k)

Richardson 方法分类

  • 平稳 Richardson 方法:ω(k)≡ω\omega^{(k)} \equiv \omegaω(k)≡ω 为常数(如 Jacobi、Gauss-Seidel、SOR 方法);
  • 非平稳 Richardson 方法:ω(k)\omega^{(k)}ω(k) 依赖于迭代步 kkk(如最速下降法、共轭梯度法)。

注:

本讲聚焦于 A\mathbf{A}A 对称正定的情形,此时可将求解 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}Ax=b 严格等价为极小化二次函数问题,从而可以使用最速下降与共轭梯度法。

对于一般的方程 Ax=b\mathbf{A} \mathbf{x} = \mathbf{b}Ax=b, 转化为 A⊤Ax=A⊤b\mathbf{A}^\top \mathbf{A} \mathbf{x} = \mathbf{A}^\top \mathbf{b}A⊤Ax=A⊤b 即可同理求解。

二次函数极值等价性

设 A∈Rn×n\mathbf{A} \in \mathbb{R}^{n \times n}A∈Rn×n 为对称正定矩阵,则求解线性方程组 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}Ax=b 等价于求解如下二次函数的极小值问题:

ϕ(x)=12x⊤Ax−b⊤x\phi(\mathbf{x}) = \frac{1}{2} \mathbf{x}^\top \mathbf{A} \mathbf{x} - \mathbf{b}^\top \mathbf{x}ϕ(x)=21​x⊤Ax−b⊤x

证明:

只需证明 ϕ(x)\phi(\mathbf{x})ϕ(x) 的极小值点 x∗\mathbf{x}^*x∗ ⇔\Leftrightarrow⇔ Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}Ax=b 的解 x∗\mathbf{x}^*x∗。

  • ⇐\Leftarrow⇐ 方向:

    事实上,对任意向量 x,y∈Rn\mathbf{x}, \mathbf{y} \in \mathbb{R}^nx,y∈Rn,我们有如下恒等式:

    12x⊤Ax−b⊤x=12(x−y)⊤A(x−y)−12y⊤Ay+(Ay−b)⊤x\frac{1}{2} \mathbf{x}^\top \mathbf{A} \mathbf{x} - \mathbf{b}^\top \mathbf{x} = \frac{1}{2} (\mathbf{x} - \mathbf{y})^\top \mathbf{A} (\mathbf{x} - \mathbf{y}) - \frac{1}{2} \mathbf{y}^\top \mathbf{A} \mathbf{y} + (\mathbf{A}\mathbf{y} - \mathbf{b})^\top \mathbf{x}21​x⊤Ax−b⊤x=21​(x−y)⊤A(x−y)−21​y⊤Ay+(Ay−b)⊤x

    对于 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}Ax=b 的解 x∗\mathbf{x}^*x∗,在恒等式中取 y=x∗\mathbf{y} = \mathbf{x}^*y=x∗ 得:

    ϕ(x)=12(x−x∗)⊤A(x−x∗)−12(x∗)⊤Ax∗\phi(\mathbf{x}) = \frac{1}{2} (\mathbf{x} - \mathbf{x}^*)^\top \mathbf{A} (\mathbf{x} - \mathbf{x}^*) - \frac{1}{2} (\mathbf{x}^*)^\top \mathbf{A} \mathbf{x}^*ϕ(x)=21​(x−x∗)⊤A(x−x∗)−21​(x∗)⊤Ax∗

    显然最小值点即为 x=x∗\mathbf{x} = \mathbf{x}^*x=x∗。

  • ⇒\Rightarrow⇒ 方向:

    设 x∗\mathbf{x}^*x∗ 是 ϕ(x)\phi(\mathbf{x})ϕ(x) 的极小值点。由于 ϕ\phiϕ 可微,极小值点处梯度必为零:

    ∇ϕ(x∗)=Ax∗−b=0\nabla \phi(\mathbf{x}^*) = \mathbf{A} \mathbf{x}^* - \mathbf{b} = \mathbf{0}∇ϕ(x∗)=Ax∗−b=0

    也即 Ax∗=b\mathbf{A} \mathbf{x}^* = \mathbf{b}Ax∗=b,因此 x∗\mathbf{x}^*x∗ 是原方程的解。

向量空间记号约定

为简化表达,引入以下记号,其中 A\mathbf{A}A 为对称正定阵:

  • 欧式内积:

    ⟨x,y⟩≡x⊤y\langle \mathbf{x}, \mathbf{y} \rangle \equiv \mathbf{x}^\top \mathbf{y}⟨x,y⟩≡x⊤y
  • A\mathbf{A}A-内积:

    ⟨x,y⟩A≡x⊤Ay=⟨x,Ay⟩=⟨Ax,y⟩\langle \mathbf{x}, \mathbf{y} \rangle _{\mathbf{A}} \equiv \mathbf{x}^\top \mathbf{A} \mathbf{y} = \langle \mathbf{x}, \mathbf{A} \mathbf{y} \rangle = \langle \mathbf{A} \mathbf{x}, \mathbf{y} \rangle⟨x,y⟩A​≡x⊤Ay=⟨x,Ay⟩=⟨Ax,y⟩

    注:因 A\mathbf{A}A 对称正定,⟨⋅  ,⋅⟩A\langle \cdot\;, \cdot \rangle _{\mathbf{A}}⟨⋅,⋅⟩A​ 确实是 Rn\mathbb{R}^nRn 上的内积。

  • A\mathbf{A}A-范数:

    ∥x∥A≡⟨x,x⟩A=x⊤Ax\|\mathbf{x}\|_\mathbf{A} \equiv \sqrt{\langle \mathbf{x}, \mathbf{x} \rangle _{\mathbf{A}}} = \sqrt{\mathbf{x}^\top \mathbf{A} \mathbf{x}}∥x∥A​≡⟨x,x⟩A​​=x⊤Ax​

于是目标函数可简写为:

ϕ(x)=12⟨x,x⟩A−⟨b,x⟩=12∥x−x∗∥A2+C\phi(\mathbf{x}) = \frac{1}{2} \langle \mathbf{x}, \mathbf{x} \rangle _{\mathbf{A}} - \langle \mathbf{b}, \mathbf{x} \rangle = \frac{1}{2} \| \mathbf{x} - \mathbf{x}^* \|_{\mathbf{A}}^2 + Cϕ(x)=21​⟨x,x⟩A​−⟨b,x⟩=21​∥x−x∗∥A2​+C

几何意义:ϕ(x)\phi(\mathbf{x})ϕ(x) 是一个开口向上的抛物面(椭球面),其等高线为 A\mathbf{A}A-椭球。


最速下降法

最速下降法是梯度下降法在二次函数情形下的具体实现,其核心思想是在每一步沿当前点处函数下降最快的方向(即负梯度方向)进行一维搜索。

设当前迭代点为 x(k)\mathbf{x}^{(k)}x(k),搜索方向为 p(k)\mathbf{p}^{(k)}p(k),步长为 α(k)\alpha^{(k)}α(k),则:

x(k+1)=x(k)+α(k)p(k)\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \alpha^{(k)} \mathbf{p}^{(k)}x(k+1)=x(k)+α(k)p(k)

其中 α(k)\alpha^{(k)}α(k) 满足:

α(k)=arg min⁡α∈Rϕ(x(k)+αp(k))=arg min⁡α∈R∥x(k)+αp(k)−x∗∥A\begin{aligned} \alpha^{(k)} &= \argmin_{\alpha \in \mathbb{R}} \phi(\mathbf{x}^{(k)} + \alpha \mathbf{p}^{(k)}) \\ &= \argmin_{\alpha \in \mathbb{R}} \|\mathbf{x}^{(k)} + \alpha \mathbf{p}^{(k)} - \mathbf{x}^*\|_{\mathbf{A}} \end{aligned}α(k)​=α∈Rargmin​ϕ(x(k)+αp(k))=α∈Rargmin​∥x(k)+αp(k)−x∗∥A​​

搜索方向的确定

函数 ϕ(x)\phi(\mathbf{x})ϕ(x) 在 x(k)\mathbf{x}^{(k)}x(k) 处的梯度为:

∇ϕ(x(k))≡g(k)=Ax(k)−b=−r(k)\nabla \phi(\mathbf{x}^{(k)}) \equiv \mathbf{g}^{(k)} = \mathbf{A} \mathbf{x}^{(k)} - \mathbf{b} = -\mathbf{r}^{(k)}∇ϕ(x(k))≡g(k)=Ax(k)−b=−r(k)

由于负梯度方向即为下降最快方向,故取搜索方向为:

p(k)=−g(k)=r(k)\mathbf{p}^{(k)} = -\mathbf{g}^{(k)} = \mathbf{r}^{(k)}p(k)=−g(k)=r(k)

步长的确定

定义单变量函数:

f(k)(α)=ϕ(x(k)+αp(k))f^{(k)}(\alpha) = \phi(\mathbf{x}^{(k)} + \alpha \mathbf{p}^{(k)})f(k)(α)=ϕ(x(k)+αp(k))

展开得:

f(k)(α)=12⟨x(k)+αp(k),x(k)+αp(k)⟩A−⟨b,x(k)+αp(k)⟩=12⟨x(k),x(k)⟩A+α⟨x(k),p(k)⟩A+α22⟨p(k),p(k)⟩A−⟨b,x(k)⟩−α⟨b,p(k)⟩=ϕ(x(k))+α⟨g(k),p(k)⟩+α22⟨p(k),p(k)⟩A\begin{aligned} f^{(k)}(\alpha) &= \frac{1}{2} \langle \mathbf{x}^{(k)} + \alpha \mathbf{p}^{(k)}, \mathbf{x}^{(k)} + \alpha \mathbf{p}^{(k)} \rangle _{\mathbf{A}} - \langle \mathbf{b}, \mathbf{x}^{(k)} + \alpha \mathbf{p}^{(k)} \rangle \\ &= \frac{1}{2} \langle \mathbf{x}^{(k)},\mathbf{x}^{(k)} \rangle _{\mathbf{A}} + \alpha \langle \mathbf{x}^{(k)},\mathbf{p}^{(k)} \rangle _{\mathbf{A}} + \frac{\alpha^2}{2} \langle \mathbf{p}^{(k)},\mathbf{p}^{(k)}\rangle _{\mathbf{A}} \\ &\quad - \langle \mathbf{b}, \mathbf{x}^{(k)} \rangle - \alpha \langle \mathbf{b}, \mathbf{p}^{(k)} \rangle \\ &= \phi(\mathbf{x}^{(k)}) + \alpha \langle \mathbf{g}^{(k)}, \mathbf{p}^{(k)} \rangle + \frac{\alpha^2}{2} \langle \mathbf{p}^{(k)},\mathbf{p}^{(k)}\rangle _{\mathbf{A}} \end{aligned}f(k)(α)​=21​⟨x(k)+αp(k),x(k)+αp(k)⟩A​−⟨b,x(k)+αp(k)⟩=21​⟨x(k),x(k)⟩A​+α⟨x(k),p(k)⟩A​+2α2​⟨p(k),p(k)⟩A​−⟨b,x(k)⟩−α⟨b,p(k)⟩=ϕ(x(k))+α⟨g(k),p(k)⟩+2α2​⟨p(k),p(k)⟩A​​

这是一个关于 α\alphaα 的二次函数,其最小值点为:

α(k)=−⟨g(k),p(k)⟩⟨p(k),p(k)⟩A=⟨r(k),p(k)⟩⟨p(k),p(k)⟩A\alpha^{(k)} = -\frac{ \langle \mathbf{g}^{(k)}, \mathbf{p}^{(k)} \rangle } { \langle \mathbf{p}^{(k)},\mathbf{p}^{(k)}\rangle _{\mathbf{A}} } = \frac{ \langle \mathbf{r}^{(k)}, \mathbf{p}^{(k)} \rangle } { \langle \mathbf{p}^{(k)},\mathbf{p}^{(k)}\rangle _{\mathbf{A}} }α(k)=−⟨p(k),p(k)⟩A​⟨g(k),p(k)⟩​=⟨p(k),p(k)⟩A​⟨r(k),p(k)⟩​

代入 p(k)=−g(k)=r(k)\mathbf{p}^{(k)} = -\mathbf{g}^{(k)} = \mathbf{r}^{(k)}p(k)=−g(k)=r(k) 得:

α(k)=⟨g(k),g(k)⟩⟨g(k),g(k)⟩A=⟨r(k),r(k)⟩⟨r(k),r(k)⟩A\alpha^{(k)} = \frac{ \langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} \rangle } { \langle \mathbf{g}^{(k)},\mathbf{g}^{(k)}\rangle _{\mathbf{A}} } = \frac{ \langle \mathbf{r}^{(k)}, \mathbf{r}^{(k)} \rangle } { \langle \mathbf{r}^{(k)},\mathbf{r}^{(k)}\rangle _{\mathbf{A}} }α(k)=⟨g(k),g(k)⟩A​⟨g(k),g(k)⟩​=⟨r(k),r(k)⟩A​⟨r(k),r(k)⟩​

梯度正交性

最速下降法具有相邻梯度(残差)正交的性质,也即:

⟨g(k−1),g(k)⟩=0,∀k⩾1\langle \mathbf{g}^{(k-1)}, \mathbf{g}^{(k)} \rangle = 0, \quad \forall k \geqslant 1⟨g(k−1),g(k)⟩=0,∀k⩾1

证明:

易得:

g(k+1)−g(k)=A(x(k+1)−x(k))=α(k)Ap(k)\mathbf{g}^{(k+1)} - \mathbf{g}^{(k)} = \mathbf{A} (\mathbf{x}^{(k+1)} - \mathbf{x}^{(k)}) = \alpha^{(k)} \mathbf{A} \mathbf{p}^{(k)}g(k+1)−g(k)=A(x(k+1)−x(k))=α(k)Ap(k)

代入 p(k)=−g(k)\mathbf{p}^{(k)} = -\mathbf{g}^{(k)}p(k)=−g(k) 得:

⟨  ⋅  ,g(k+1)⟩−⟨  ⋅  ,g(k)⟩=−α(k)⟨  ⋅  ,g(k)⟩A\langle \;\cdot\;, \mathbf{g}^{(k+1)} \rangle - \langle \;\cdot\;, \mathbf{g}^{(k)} \rangle = -\alpha^{(k)} \langle \;\cdot\;, \mathbf{g}^{(k)} \rangle _\mathbf{A}⟨⋅,g(k+1)⟩−⟨⋅,g(k)⟩=−α(k)⟨⋅,g(k)⟩A​

再代入 g(k)\mathbf{g}^{(k)}g(k) 并结合 α(k)=⟨g(k),g(k)⟩/⟨g(k),g(k)⟩A\alpha^{(k)} = \langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} \rangle / \langle \mathbf{g}^{(k)},\mathbf{g}^{(k)}\rangle _{\mathbf{A}}α(k)=⟨g(k),g(k)⟩/⟨g(k),g(k)⟩A​ 得:

⟨g(k−1),g(k)⟩=0\langle \mathbf{g}^{(k-1)}, \mathbf{g}^{(k)} \rangle = 0⟨g(k−1),g(k)⟩=0

注:该性质仅对相邻步成立;非相邻步一般不正交,这是最速下降法收敛较慢的根本原因(可能出现锯齿状)。

最速下降法代码

初始化:给定初值 x(0)\mathbf{x}^{(0)}x(0),计算梯度 g(0)=Ax(0)−b\mathbf{g}^{(0)} = \mathbf{A} \mathbf{x}^{(0)} - \mathbf{b}g(0)=Ax(0)−b

循环:

  • 计算 t=Ag(k)\mathbf{t} = \mathbf{A} \mathbf{g}^{(k)}t=Ag(k)
  • 计算步长: α(k)=⟨g(k),g(k)⟩⟨g(k),t⟩\alpha^{(k)} = \dfrac{ \langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} \rangle } { \langle \mathbf{g}^{(k)}, \mathbf{t} \rangle }α(k)=⟨g(k),t⟩⟨g(k),g(k)⟩​
  • 更新解:x(k+1)=x(k)−α(k)g(k)\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} - \alpha^{(k)} \mathbf{g}^{(k)}x(k+1)=x(k)−α(k)g(k)
  • 更新梯度:g(k+1)=g(k)−α(k)t\mathbf{g}^{(k+1)} = \mathbf{g}^{(k)} - \alpha^{(k)} \mathbf{t}g(k+1)=g(k)−α(k)t
  • 若 ∥r(k+1)∥2=∥g(k+1)∥2<ε\|\mathbf{r}^{(k+1)}\|_2 = \|\mathbf{g}^{(k+1)}\|_2 < \varepsilon∥r(k+1)∥2​=∥g(k+1)∥2​<ε,终止;否则继续循环
k = 0
g = A @ x - b
while k < N:
    t = A @ g
    alpha = np.dot(g, g) / np.dot(g, t)  # 步长
    x -= alpha * g                       # 更新解
    g -= alpha * t                       # 更新梯度
    if np.linalg.norm(g) < EPS:
        break
    k += 1

复杂度分析:主要代价来自矩阵-向量乘法 Ag(k)\mathbf{A} \mathbf{g}^{(k)}Ag(k)。若 A\mathbf{A}A 稀疏,则成本为 O(nnz(A))\mathcal{O}(\text{nnz}(\mathbf{A}))O(nnz(A))。

最速下降法收敛性分析

引理:设正定对称矩阵 A∈Rn×n\mathbf{A} \in \mathbb{R}^{n \times n}A∈Rn×n 的特征值为 0<λ1⩽⋯⩽λn0 < \lambda_1 \leqslant \cdots \leqslant \lambda_n0<λ1​⩽⋯⩽λn​, P(t)P(t)P(t) 是一个关于 ttt 的多项式,则有:

∥P(A)x∥A⩽max⁡1⩽i⩽n∣P(λi)∣∥x∥A,x∈Rn\|P(\mathbf{A})\mathbf{x}\|_{\mathbf{A}} \leqslant \max_{1 \leqslant i \leqslant n}|P(\lambda_i)|\|\mathbf{x}\|_{\mathbf{A}}, \quad \mathbf{x} \in \mathbb{R}^n∥P(A)x∥A​⩽1⩽i⩽nmax​∣P(λi​)∣∥x∥A​,x∈Rn

引理的证明:

由于 A\mathbf{A}A 是正定对称矩阵,根据谱定理,存在正交矩阵 Q\mathbf{Q}Q 使得:

A=QΛQ⊤\mathbf{A} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\topA=QΛQ⊤

其中 Λ=diag(λ1,λ2,…,λn)\mathbf{\Lambda} = \mathrm{diag}(\lambda_1, \lambda_2, \ldots, \lambda_n)Λ=diag(λ1​,λ2​,…,λn​), 且 0<λ1⩽λ2⩽⋯⩽λn0 < \lambda_1 \leqslant \lambda_2 \leqslant \cdots \leqslant \lambda_n0<λ1​⩽λ2​⩽⋯⩽λn​。

对于多项式 P(t)=a0+a1t+a2t2+⋯+amtmP(t) = a_0 + a_1 t + a_2 t^2 + \cdots + a_m t^mP(t)=a0​+a1​t+a2​t2+⋯+am​tm,有:

P(A)=a0I+a1A+a2A2+⋯+amAmP(\mathbf{A}) = a_0\mathbf{I} + a_1\mathbf{A} + a_2\mathbf{A}^2 + \cdots + a_m\mathbf{A}^mP(A)=a0​I+a1​A+a2​A2+⋯+am​Am

利用 A=QΛQ⊤\mathbf{A} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\topA=QΛQ⊤, 可得 Ak=QΛkQ⊤\mathbf{A}^k = \mathbf{Q}\mathbf{\Lambda}^k\mathbf{Q}^\topAk=QΛkQ⊤,其中 k=0,1,2,…k = 0, 1, 2, \ldotsk=0,1,2,…

因此:

P(A)=QP(Λ)Q⊤=Q diag(P(λ1),P(λ2),…,P(λn)) Q⊤P(\mathbf{A}) = \mathbf{Q}P(\mathbf{\Lambda})\mathbf{Q}^\top = \mathbf{Q}\,\mathrm{diag}(P(\lambda_1), P(\lambda_2), \ldots, P(\lambda_n))\,\mathbf{Q}^\topP(A)=QP(Λ)Q⊤=Qdiag(P(λ1​),P(λ2​),…,P(λn​))Q⊤

令 y=Q⊤x\mathbf{y} = \mathbf{Q}^\top\mathbf{x}y=Q⊤x,即 x=Qy\mathbf{x} = \mathbf{Q}\mathbf{y}x=Qy。从而:

∥x∥A2=x⊤Ax=y⊤Λy=∑i=1nλiyi2\|\mathbf{x}\|_{\mathbf{A}}^2 = \mathbf{x}^\top\mathbf{A}\mathbf{x} = \mathbf{y}^\top\mathbf{\Lambda}\mathbf{y} = \sum_{i=1}^n \lambda_i y_i^2∥x∥A2​=x⊤Ax=y⊤Λy=i=1∑n​λi​yi2​ ∥P(A)x∥A2=(P(A)x)⊤A(P(A)x)=x⊤P(A)⊤AP(A)x=y⊤P(Λ)ΛP(Λ)y=∑i=1nλi[P(λi)]2yi2\begin{aligned} \|P(\mathbf{A})\mathbf{x}\|_{\mathbf{A}}^2 &= (P(\mathbf{A})\mathbf{x})^\top \mathbf{A} (P(\mathbf{A})\mathbf{x}) = \mathbf{x}^\top P(\mathbf{A})^\top \mathbf{A} P(\mathbf{A})\mathbf{x} \\ &= \mathbf{y}^\top P(\mathbf{\Lambda})\mathbf{\Lambda}P(\mathbf{\Lambda})\mathbf{y} = \sum_{i=1}^n \lambda_i [P(\lambda_i)]^2 y_i^2 \end{aligned}∥P(A)x∥A2​​=(P(A)x)⊤A(P(A)x)=x⊤P(A)⊤AP(A)x=y⊤P(Λ)ΛP(Λ)y=i=1∑n​λi​[P(λi​)]2yi2​​

设 M=max⁡1⩽i⩽n∣P(λi)∣M = \max_{1 \leqslant i \leqslant n}|P(\lambda_i)|M=max1⩽i⩽n​∣P(λi​)∣,则有:

∥P(A)x∥A2=∑i=1nλi[P(λi)]2yi2⩽M2∑i=1nλiyi2=M2∥x∥A2\|P(\mathbf{A})\mathbf{x}\|_{\mathbf{A}}^2 = \sum_{i=1}^n \lambda_i [P(\lambda_i)]^2 y_i^2 \leqslant M^2 \sum_{i=1}^n \lambda_i y_i^2 = M^2 \|\mathbf{x}\|_{\mathbf{A}}^2∥P(A)x∥A2​=i=1∑n​λi​[P(λi​)]2yi2​⩽M2i=1∑n​λi​yi2​=M2∥x∥A2​

两边开方即证。

最速下降法误差估计:

设 A\mathbf{A}A 的特征值满足 0<λ1⩽λ2⩽⋯⩽λn0 < \lambda_1 \leqslant \lambda_2 \leqslant \cdots \leqslant \lambda_n0<λ1​⩽λ2​⩽⋯⩽λn​,则对任意初始值 x(0)\mathbf{x}^{(0)}x(0),有:

∥x(k)−x∗∥A⩽(λn−λ1λn+λ1)k∥x(0)−x∗∥A\|\mathbf{x}^{(k)} - \mathbf{x}^*\|_\mathbf{A} \leqslant \left( \frac{ \lambda_n - \lambda_1 }{ \lambda_n + \lambda_1 } \right)^k \|\mathbf{x}^{(0)} - \mathbf{x}^*\|_\mathbf{A}∥x(k)−x∗∥A​⩽(λn​+λ1​λn​−λ1​​)k∥x(0)−x∗∥A​

证明:

设 x∗\mathbf{x}^*x∗ 是方程 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}Ax=b 的精确解,定义误差向量 e(k)=x(k)−x∗\mathbf{e}^{(k)} = \mathbf{x}^{(k)} - \mathbf{x}^*e(k)=x(k)−x∗。

则有:

g(k)=Ax(k)−b=Ae(k)\mathbf{g}^{(k)} = \mathbf{A} \mathbf{x}^{(k)} - \mathbf{b} = \mathbf{A} \mathbf{e}^{(k)}g(k)=Ax(k)−b=Ae(k)

我们还有:

g(k+1)=g(k)+α(k)Ap(k)=(I−α(k)A)g(k)\mathbf{g}^{(k+1)} = \mathbf{g}^{(k)} + \alpha^{(k)} \mathbf{A} \mathbf{p}^{(k)} = (\mathbf{I} - \alpha^{(k)} \mathbf{A}) \mathbf{g}^{(k)}g(k+1)=g(k)+α(k)Ap(k)=(I−α(k)A)g(k)

从而:

e(k+1)=(I−α(k)A)e(k)\mathbf{e}^{(k+1)} = (\mathbf{I} - \alpha^{(k)} \mathbf{A}) \mathbf{e}^{(k)}e(k+1)=(I−α(k)A)e(k)

我们还知道 α(k)=arg min⁡α∈R∥e(k+1)∥A\alpha^{(k)} = \argmin_{\alpha \in \mathbb{R}} \|\mathbf{e}^{(k+1)}\|_{\mathbf{A}}α(k)=argminα∈R​∥e(k+1)∥A​,从而:

∥e(k+1)∥A=∥(I−α(k)A)e(k)∥A⩽∥(I−αA)e(k)∥A\|\mathbf{e}^{(k+1)}\|_{\mathbf{A}} = \|(\mathbf{I} - \alpha^{(k)} \mathbf{A}) \mathbf{e}^{(k)}\|_{\mathbf{A}} \leqslant \|(\mathbf{I} - \alpha \mathbf{A}) \mathbf{e}^{(k)}\|_{\mathbf{A}}∥e(k+1)∥A​=∥(I−α(k)A)e(k)∥A​⩽∥(I−αA)e(k)∥A​

考虑一次多项式 P(t)=1−αtP(t) = 1 - \alpha tP(t)=1−αt,则 P(A)=I−αAP(\mathbf{A}) = \mathbf{I} - \alpha \mathbf{A}P(A)=I−αA。

根据引理:

∥(I−αA)e(k)∥A⩽max⁡1⩽i⩽n∣1−αλi∣⋅∥e(k)∥A\|(\mathbf{I} - \alpha \mathbf{A})\mathbf{e}^{(k)}\|_{\mathbf{A}} \leqslant \max_{1 \leqslant i \leqslant n} |1 - \alpha \lambda_i| \cdot \|\mathbf{e}^{(k)}\|_{\mathbf{A}}∥(I−αA)e(k)∥A​⩽1⩽i⩽nmax​∣1−αλi​∣⋅∥e(k)∥A​

因此:

∥e(k+1)∥A⩽min⁡α∈Rmax⁡1⩽i⩽n∣1−αλi∣⋅∥e(k)∥A\|\mathbf{e}^{(k+1)}\|_{\mathbf{A}} \leqslant \min_{\alpha \in \mathbb{R}} \max_{1 \leqslant i \leqslant n}|1 - \alpha \lambda_i| \cdot \|\mathbf{e}^{(k)}\|_{\mathbf{A}}∥e(k+1)∥A​⩽α∈Rmin​1⩽i⩽nmax​∣1−αλi​∣⋅∥e(k)∥A​

由于 {λi}i=1n⊂[λ1,λn]\{\lambda_i\}_{i=1}^n \subset [\lambda_1, \lambda_n]{λi​}i=1n​⊂[λ1​,λn​],且 ∣1−αλ∣|1-\alpha \lambda|∣1−αλ∣ 是 λ\lambdaλ 的线性函数,其最大值必在区间端点达到:

max⁡1⩽i⩽n∣1−αλi∣⩽max⁡λ∈[λ1,λn]∣1−αλ∣=max⁡{∣1−αλ1∣,∣1−αλn∣}\max_{1 \leqslant i \leqslant n}|1 - \alpha \lambda_i| \leqslant \max_{\lambda \in [\lambda_1, \lambda_n]}|1 - \alpha \lambda| = \max\{|1 - \alpha \lambda_1|, |1 - \alpha \lambda_n|\}1⩽i⩽nmax​∣1−αλi​∣⩽λ∈[λ1​,λn​]max​∣1−αλ∣=max{∣1−αλ1​∣,∣1−αλn​∣}

最优的 α∗\alpha^*α∗ 应使得 ∣1−αλ1∣=∣1−αλn∣|1 - \alpha \lambda_1| = |1 - \alpha \lambda_n|∣1−αλ1​∣=∣1−αλn​∣,且符号相反,也即 1−α∗λ1=−(1−α∗λn)1 - \alpha^* \lambda_1 = -(1 - \alpha^* \lambda_n)1−α∗λ1​=−(1−α∗λn​)

解得 α∗=(λ1+λn)/2\alpha^* = (\lambda_1 + \lambda_n)/2α∗=(λ1​+λn​)/2。代入得:

max⁡1⩽i⩽n∣1−α∗λi∣=1−2λ1λ1+λn=λn−λ1λn+λ1\max_{1 \leqslant i \leqslant n}|1 - \alpha^* \lambda_i| = 1 - \frac{2\lambda_1}{\lambda_1 + \lambda_n} = \frac{\lambda_n - \lambda_1}{\lambda_n + \lambda_1}1⩽i⩽nmax​∣1−α∗λi​∣=1−λ1​+λn​2λ1​​=λn​+λ1​λn​−λ1​​

综上,得到单步误差缩减 ∥e(k+1)∥A⩽λn−λ1λn+λ1∥e(k)∥A\|\mathbf{e}^{(k+1)}\|_{\mathbf{A}} \leqslant \frac{\lambda_n - \lambda_1}{\lambda_n + \lambda_1} \|\mathbf{e}^{(k)}\|_{\mathbf{A}}∥e(k+1)∥A​⩽λn​+λ1​λn​−λ1​​∥e(k)∥A​。 递推 kkk 次即证。

注:

  • 收敛速率由特征值决定;
  • 当 λn/λ1≫1\lambda_n / \lambda_1 \gg 1λn​/λ1​≫1(如高长宽比椭球),收敛极慢(锯齿形路径);

共轭梯度法

共轭梯度法是对最速下降法的根本性改进:不再使用负梯度方向,而是构造一组 A\mathbf{A}A-共轭搜索方向 {d(k)}\{\mathbf{d}^{(k)}\}{d(k)},使得在 nnn 步内精确收敛(无舍入误差下),避免震荡。

A-共轭与共轭方向

定义:

  • A\mathbf{A}A-共轭:对称正定矩阵 A\mathbf{A}A 下, 向量 x,y\mathbf{x}, \mathbf{y}x,y 满足: ⟨x,y⟩A=x⊤Ay=0\langle \mathbf{x}, \mathbf{y} \rangle _\mathbf{A} = \mathbf{x}^\top \mathbf{A} \mathbf{y} = 0⟨x,y⟩A​=x⊤Ay=0
  • A\mathbf{A}A-共轭向量组:{d(0),d(1),…,d(m)}\{\mathbf{d}^{(0)}, \mathbf{d}^{(1)}, \dots, \mathbf{d}^{(m)}\}{d(0),d(1),…,d(m)} 满足: ⟨d(i),d(j)⟩A=0,∀i≠j\langle \mathbf{d}^{(i)}, \mathbf{d}^{(j)} \rangle _\mathbf{A} = 0, \quad \forall i \ne j⟨d(i),d(j)⟩A​=0,∀i=j

性质:

  • A\mathbf{A}A-共轭向量组线性无关;

  • Rn\mathbb{R}^nRn 中最多存在 nnn 个线性无关的 A\mathbf{A}A-共轭向量;

  • 若 {d(i)}i=0n−1\{\mathbf{d}^{(i)}\}_{i=0}^{n-1}{d(i)}i=0n−1​ 构成 A\mathbf{A}A-共轭基,则任意向量 x\mathbf{x}x 可唯一投影表示为:

    x=∑i=0n−1λid(i),λi=⟨x,d(i)⟩A⟨d(i),d(i)⟩A\mathbf{x} = \sum_{i=0}^{n-1} \lambda_i \mathbf{d}^{(i)}, \quad \lambda_i = \frac{ \langle \mathbf{x}, \mathbf{d}^{(i)} \rangle _\mathbf{A} } { \langle \mathbf{d}^{(i)}, \mathbf{d}^{(i)} \rangle _\mathbf{A} }x=i=0∑n−1​λi​d(i),λi​=⟨d(i),d(i)⟩A​⟨x,d(i)⟩A​​

    特殊地,对于解 x∗\mathbf{x}^*x∗,有:

    x∗=∑i=0n−1λid(i),λi=⟨b,d(i)⟩⟨d(i),d(i)⟩A\mathbf{x}^* = \sum_{i=0}^{n-1} \lambda_i \mathbf{d}^{(i)}, \quad \lambda_i = \frac{ \langle \mathbf{b}, \mathbf{d}^{(i)} \rangle } { \langle \mathbf{d}^{(i)}, \mathbf{d}^{(i)} \rangle _\mathbf{A} }x∗=i=0∑n−1​λi​d(i),λi​=⟨d(i),d(i)⟩A​⟨b,d(i)⟩​

几何意义:A\mathbf{A}A-共轭方向在拉伸后的坐标系下相互垂直(椭球主轴方向),沿这些方向搜索更加高效。

递推构造共轭方向

共轭梯度法递推构造了一组 A\mathbf{A}A-共轭基,并且一边构造一边进行求解(投影)。具体构造如下:

  1. 初值: x(0),d(0)=−g(0)\mathbf{x}^{(0)}, \quad \mathbf{d}^{(0)} = -\mathbf{g}^{(0)}x(0),d(0)=−g(0)
  2. 先构造新的解和梯度: x(k)=x(k−1)+α(k−1)Ad(k−1)\mathbf{x}^{(k)} = \mathbf{x}^{(k-1)} + \alpha^{(k-1)} \mathbf{A} \mathbf{d}^{(k-1)}x(k)=x(k−1)+α(k−1)Ad(k−1) 其中 α(k−1)\alpha^{(k-1)}α(k−1) 由前述确定(实际上是确保了相邻梯度正交): α(k−1)=−⟨g(k−1),d(k−1)⟩⟨d(k−1),d(k−1)⟩A\alpha^{(k-1)} = -\frac{ \langle \mathbf{g}^{(k-1)}, \mathbf{d}^{(k-1)} \rangle } { \langle \mathbf{d}^{(k-1)}, \mathbf{d}^{(k-1)} \rangle _\mathbf{A} }α(k−1)=−⟨d(k−1),d(k−1)⟩A​⟨g(k−1),d(k−1)⟩​ 从而可得新的梯度 g(k)=Ax(k)−b\mathbf{g}^{(k)} = \mathbf{A} \mathbf{x}^{(k)} - \mathbf{b}g(k)=Ax(k)−b
  3. 再构造新的共轭方向: d(k)=−g(k)+β(k−1)d(k−1)\mathbf{d}^{(k)} = -\mathbf{g}^{(k)} + \beta^{(k-1)} \mathbf{d}^{(k-1)}d(k)=−g(k)+β(k−1)d(k−1) 其中 β(k−1)\beta^{(k-1)}β(k−1) 由 A\mathbf{A}A-共轭条件 ⟨d(k−1),d(k)⟩A=0\langle \mathbf{d}^{(k-1)}, \mathbf{d}^{(k)} \rangle _\mathbf{A} = 0⟨d(k−1),d(k)⟩A​=0 确定: β(k−1)=⟨g(k),d(k−1)⟩A⟨d(k−1),d(k−1)⟩A\beta^{(k-1)} = \frac{ \langle \mathbf{g}^{(k)}, \mathbf{d}^{(k-1)}\rangle _\mathbf{A} } { \langle \mathbf{d}^{(k-1)}, \mathbf{d}^{(k-1)}\rangle _\mathbf{A} }β(k−1)=⟨d(k−1),d(k−1)⟩A​⟨g(k),d(k−1)⟩A​​

定理: 共轭梯度法递推构造的向量组 {d(k)}\{\mathbf{d}^{(k)}\}{d(k)} 是 A\mathbf{A}A-共轭基,即:

⟨d(i),d(j)⟩A=0,∀i≠j\langle \mathbf{d}^{(i)}, \mathbf{d}^{(j)} \rangle _\mathbf{A} = 0, \quad \forall i \neq j⟨d(i),d(j)⟩A​=0,∀i=j

证明:

数学归纳法,同时证明以下三个性质对任意 k⩾0k \geqslant 0k⩾0 成立:

  1. A\mathbf{A}A-共轭性: ⟨d(i),d(j)⟩A=0,\langle \mathbf{d}^{(i)}, \mathbf{d}^{(j)} \rangle _\mathbf{A} = 0,⟨d(i),d(j)⟩A​=0,,对 0⩽j<i⩽k0 \leqslant j < i \leqslant k0⩽j<i⩽k
  2. 梯度正交性:⟨g(i),g(j)⟩=0\langle \mathbf{g}^{(i)}, \mathbf{g}^{(j)} \rangle = 0⟨g(i),g(j)⟩=0,对 0⩽j<i⩽k0 \leqslant j < i \leqslant k0⩽j<i⩽k
  3. 梯度与方向正交:⟨g(i),d(j)⟩=0\langle \mathbf{g}^{(i)}, \mathbf{d}^{(j)} \rangle = 0⟨g(i),d(j)⟩=0,对 0⩽j<i⩽k0 \leqslant j < i \leqslant k0⩽j<i⩽k

已知迭代关系为:

g(k+1)=g(k)+α(k)Ad(k),d(k)=−g(k)+β(k−1)d(k−1)\mathbf{g}^{(k+1)} = \mathbf{g}^{(k)} + \alpha^{(k)}\mathbf{A}\mathbf{d}^{(k)}, \quad \mathbf{d}^{(k)} = -\mathbf{g}^{(k)} + \beta^{(k-1)} \mathbf{d}^{(k-1)}g(k+1)=g(k)+α(k)Ad(k),d(k)=−g(k)+β(k−1)d(k−1)

也即:

⟨  ⋅  ,g(m+1)⟩=⟨  ⋅  ,g(m)⟩+α(m)⟨  ⋅  ,d(m)⟩A⟨  ⋅  ,d(m)⟩A=−⟨  ⋅  ,g(m)⟩A+β(m−1)⟨  ⋅  ,d(m−1)⟩A\begin{align} \langle \;\cdot\;, \mathbf{g}^{(m+1)} \rangle &= \langle \;\cdot\;, \mathbf{g}^{(m)} \rangle + \alpha^{(m)}\langle \;\cdot\;, \mathbf{d}^{(m)} \rangle _\mathbf{A} \\ \langle \;\cdot\;, \mathbf{d}^{(m)} \rangle _\mathbf{A} &= -\langle \;\cdot\;, \mathbf{g}^{(m)} \rangle _\mathbf{A} + \beta^{(m-1)} \langle \;\cdot\;, \mathbf{d}^{(m-1)} \rangle _\mathbf{A} \end{align}⟨⋅,g(m+1)⟩⟨⋅,d(m)⟩A​​=⟨⋅,g(m)⟩+α(m)⟨⋅,d(m)⟩A​=−⟨⋅,g(m)⟩A​+β(m−1)⟨⋅,d(m−1)⟩A​​​
  • 验证初值:

⟨d(1),d(0)⟩A=0\langle \mathbf{d}^{(1)}, \mathbf{d}^{(0)}\rangle _\mathbf{A} = 0⟨d(1),d(0)⟩A​=0 显然。

利用 d(0)=−g(0)\mathbf{d}^{(0)} = -\mathbf{g}^{(0)}d(0)=−g(0) 和 α(0)=⟨g(0),g(0)⟩/⟨g(0),g(0)⟩A\alpha^{(0)} = \langle \mathbf{g}^{(0)}, \mathbf{g}^{(0)} \rangle / \langle \mathbf{g}^{(0)}, \mathbf{g}^{(0)} \rangle _\mathbf{A}α(0)=⟨g(0),g(0)⟩/⟨g(0),g(0)⟩A​ ,在 (1)(1)(1) 式中代入 g(0)\mathbf{g}^{(0)}g(0) 和 m=0m=0m=0:

⟨g(0),g(1)⟩=⟨g(0),g(0)⟩−α(0)⟨g(0),g(0)⟩A=0\langle \mathbf{g}^{(0)}, \mathbf{g}^{(1)} \rangle = \langle \mathbf{g}^{(0)}, \mathbf{g}^{(0)} \rangle - \alpha^{(0)}\langle \mathbf{g}^{(0)}, \mathbf{g}^{(0)} \rangle _\mathbf{A} = 0⟨g(0),g(1)⟩=⟨g(0),g(0)⟩−α(0)⟨g(0),g(0)⟩A​=0
  • 归纳假设:

假设对某个 k⩾1k \geqslant 1k⩾1,上述三性质对 kkk 成立。下证对于 k+1k+1k+1 也成立。

先证梯度正交性: ⟨g(k+1),g(j)⟩=0\langle \mathbf{g}^{(k+1)}, \mathbf{g}^{(j)} \rangle = 0⟨g(k+1),g(j)⟩=0 对 j⩽kj \leqslant kj⩽k。

  • j=kj = kj=k 时:由递推方式显然。
  • j<kj \lt kj<k 时: 在 (1)(1)(1) 式中代入 g(j)\mathbf{g}^{(j)}g(j) 和 m=km=km=k: ⟨g(j),g(k+1)⟩=⟨g(j),g(k)⟩+α(k)⟨g(j),d(k)⟩A=0\langle \mathbf{g}^{(j)}, \mathbf{g}^{(k+1)} \rangle = \langle \mathbf{g}^{(j)}, \mathbf{g}^{(k)} \rangle + \alpha^{(k)}\langle \mathbf{g}^{(j)}, \mathbf{d}^{(k)} \rangle _\mathbf{A} = 0⟨g(j),g(k+1)⟩=⟨g(j),g(k)⟩+α(k)⟨g(j),d(k)⟩A​=0

再证梯度方向正交性: ⟨g(k+1),d(j)⟩=0\langle \mathbf{g}^{(k+1)}, \mathbf{d}^{(j)} \rangle = 0⟨g(k+1),d(j)⟩=0 对 j⩽kj \leqslant kj⩽k。

  • j=kj = kj=k 时:由递推方式显然。
  • j<kj < kj<k 时: 在 (1)(1)(1) 式中代入 d(j)\mathbf{d}^{(j)}d(j) 和 m=km=km=k: ⟨d(j),g(k+1)⟩=⟨d(j),g(k)⟩+α(k)⟨d(j),d(k)⟩A=0\langle \mathbf{d}^{(j)}, \mathbf{g}^{(k+1)} \rangle = \langle \mathbf{d}^{(j)}, \mathbf{g}^{(k)} \rangle + \alpha^{(k)}\langle \mathbf{d}^{(j)}, \mathbf{d}^{(k)} \rangle _\mathbf{A} = 0⟨d(j),g(k+1)⟩=⟨d(j),g(k)⟩+α(k)⟨d(j),d(k)⟩A​=0

最后证明 A\mathbf{A}A-共轭性: ⟨d(k+1),d(j)⟩A=0\langle \mathbf{d}^{(k+1)}, \mathbf{d}^{(j)} \rangle _\mathbf{A} = 0⟨d(k+1),d(j)⟩A​=0 对 j⩽kj \leqslant kj⩽k。

  • j=kj = kj=k 时:由递推方式显然。

  • j<kj < kj<k 时: 在 (2)(2)(2) 式中代入 d(j)\mathbf{d}^{(j)}d(j) 和 m=k+1m=k+1m=k+1:

    ⟨d(j),d(k+1)⟩A=−⟨d(j),g(k+1)⟩A+β(k)⟨d(j),d(k)⟩A=−⟨d(j),g(k+1)⟩A\begin{aligned} \langle \mathbf{d}^{(j)}, \mathbf{d}^{(k+1)} \rangle _\mathbf{A} &= -\langle \mathbf{d}^{(j)}, \mathbf{g}^{(k+1)} \rangle _\mathbf{A} + \beta^{(k)}\langle \mathbf{d}^{(j)}, \mathbf{d}^{(k)} \rangle _\mathbf{A} \\ &= -\langle \mathbf{d}^{(j)}, \mathbf{g}^{(k+1)} \rangle _\mathbf{A} \end{aligned}⟨d(j),d(k+1)⟩A​​=−⟨d(j),g(k+1)⟩A​+β(k)⟨d(j),d(k)⟩A​=−⟨d(j),g(k+1)⟩A​​

    又因为在 (1)(1)(1) 式中代入 g(k+1)\mathbf{g}^{(k+1)}g(k+1) 和 m=jm=jm=j:

    ⟨g(k+1),g(j+1)⟩=⟨g(k+1),g(j)⟩+α(j)⟨g(k+1),d(j)⟩A\langle \mathbf{g}^{(k+1)}, \mathbf{g}^{(j+1)} \rangle = \langle \mathbf{g}^{(k+1)}, \mathbf{g}^{(j)} \rangle + \alpha^{(j)}\langle \mathbf{g}^{(k+1)}, \mathbf{d}^{(j)} \rangle _\mathbf{A}⟨g(k+1),g(j+1)⟩=⟨g(k+1),g(j)⟩+α(j)⟨g(k+1),d(j)⟩A​

    从而:

    ⟨d(j),d(k+1)⟩A=−⟨d(j),g(k+1)⟩A=0\langle \mathbf{d}^{(j)}, \mathbf{d}^{(k+1)} \rangle _\mathbf{A} = -\langle \mathbf{d}^{(j)}, \mathbf{g}^{(k+1)} \rangle _\mathbf{A} = 0⟨d(j),d(k+1)⟩A​=−⟨d(j),g(k+1)⟩A​=0

证毕。

共轭参数的等价形式

  1. Hestenes–Stiefel (HS):

    βHS(k−1)=⟨g(k),d(k−1)⟩A⟨d(k−1),d(k−1)⟩A\beta^{(k-1)}_{\text{HS}} = \frac{\langle \mathbf{g}^{(k)}, \mathbf{d}^{(k-1)} \rangle _{\mathbf{A}}} {\langle \mathbf{d}^{(k-1)}, \mathbf{d}^{(k-1)} \rangle _{\mathbf{A}}}βHS(k−1)​=⟨d(k−1),d(k−1)⟩A​⟨g(k),d(k−1)⟩A​​
  2. Crowder–Wolfe (CW):

    βCW(k−1)=⟨g(k),g(k)−g(k−1)⟩⟨d(k−1),g(k)−g(k−1)⟩\beta^{(k-1)}_{\text{CW}} = \frac{\langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} - \mathbf{g}^{(k-1)} \rangle} {\langle \mathbf{d}^{(k-1)}, \mathbf{g}^{(k)} - \mathbf{g}^{(k-1)} \rangle}βCW(k−1)​=⟨d(k−1),g(k)−g(k−1)⟩⟨g(k),g(k)−g(k−1)⟩​

    等价性证明:

    利用 g(k)−g(k−1)=α(k−1)Ad(k−1)\mathbf{g}^{(k)} - \mathbf{g}^{(k-1)} = \alpha^{(k-1)} \mathbf{A} \mathbf{d}^{(k-1)}g(k)−g(k−1)=α(k−1)Ad(k−1),代入 HS 即得。

  3. Dixon (D):

    βD(k−1)=−⟨g(k),g(k)⟩⟨d(k−1),g(k−1)⟩\beta^{(k-1)}_{\text{D}} = -\frac{\langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} \rangle} {\langle \mathbf{d}^{(k-1)}, \mathbf{g}^{(k-1)} \rangle}βD(k−1)​=−⟨d(k−1),g(k−1)⟩⟨g(k),g(k)⟩​

    等价性证明:

    利用前述性质代入 CW 即得。

  4. Fletcher–Reeves (FR):

    βFR(k−1)=⟨g(k),g(k)⟩⟨g(k−1),g(k−1)⟩\beta^{(k-1)}_{\text{FR}} = \frac{\langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} \rangle} {\langle \mathbf{g}^{(k-1)}, \mathbf{g}^{(k-1)} \rangle}βFR(k−1)​=⟨g(k−1),g(k−1)⟩⟨g(k),g(k)⟩​

    等价性证明:

    利用 ⟨d(k),g(k)⟩=−⟨g(k),g(k)⟩\langle \mathbf{d}^{(k)}, \mathbf{g}^{(k)} \rangle = -\langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} \rangle⟨d(k),g(k)⟩=−⟨g(k),g(k)⟩ 代入 D 即得。

  5. Polak–Ribière–Polyak (PRP):

    βPRP(k−1)=⟨g(k),g(k)−g(k−1)⟩⟨g(k−1),g(k−1)⟩\beta^{(k-1)}_{\text{PRP}} = \frac{\langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} - \mathbf{g}^{(k-1)} \rangle} {\langle \mathbf{g}^{(k-1)}, \mathbf{g}^{(k-1)} \rangle}βPRP(k−1)​=⟨g(k−1),g(k−1)⟩⟨g(k),g(k)−g(k−1)⟩​

    等价性证明:显然。

  6. Dai–Yuan (DY):

    βDY(k−1)=⟨g(k),g(k)⟩⟨d(k−1),g(k)−g(k−1)⟩\beta^{(k-1)}_{\text{DY}} = \frac{\langle \mathbf{g}^{(k)}, \mathbf{g}^{(k)} \rangle} {\langle \mathbf{d}^{(k-1)}, \mathbf{g}^{(k)} - \mathbf{g}^{(k-1)} \rangle}βDY(k−1)​=⟨d(k−1),g(k)−g(k−1)⟩⟨g(k),g(k)⟩​

    等价性证明:显然。

共轭梯度法代码

初始化: 给定初值 x(0)\mathbf{x}^{(0)}x(0), 计算梯度 g(0)=Ax(0)−b\mathbf{g}^{(0)} = \mathbf{A}\mathbf{x}^{(0)} - \mathbf{b}g(0)=Ax(0)−b, 设搜索方向 d(0)=−g(0)\mathbf{d}^{(0)} = -\mathbf{g}^{(0)}d(0)=−g(0)

循环:

  • 计算 t=Ad(k)\mathbf{t} = \mathbf{A}\mathbf{d}^{(k)}t=Ad(k)
  • 计算 s=⟨d(k),t⟩s = \langle \mathbf{d}^{(k)}, \mathbf{t} \rangles=⟨d(k),t⟩(即 ⟨d(k),d(k)⟩A\langle \mathbf{d}^{(k)}, \mathbf{d}^{(k)} \rangle _\mathbf{A}⟨d(k),d(k)⟩A​)
  • 计算步长: α(k)=−⟨g(k),d(k)⟩s\alpha^{(k)} = -\dfrac{ \langle \mathbf{g}^{(k)}, \mathbf{d}^{(k)} \rangle }{ s }α(k)=−s⟨g(k),d(k)⟩​
  • 更新解:x(k+1)=x(k)+α(k)d(k)\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \alpha^{(k)} \mathbf{d}^{(k)}x(k+1)=x(k)+α(k)d(k)
  • 更新梯度:g(k+1)=g(k)+α(k)t\mathbf{g}^{(k+1)} = \mathbf{g}^{(k)} + \alpha^{(k)} \mathbf{t}g(k+1)=g(k)+α(k)t
  • 若 ∥r(k+1)∥2=∥g(k+1)∥2<ε\|\mathbf{r}^{(k+1)}\|_2 = \|\mathbf{g}^{(k+1)}\|_2 < \varepsilon∥r(k+1)∥2​=∥g(k+1)∥2​<ε,终止
  • 计算 β(k)\beta^{(k)}β(k):选择等价形式中的一种,一般采用 FR 形式。 β(k)=∥g(k+1)∥22∥g(k)∥22\beta^{(k)} = \dfrac{ \|\mathbf{g}^{(k+1)}\|_2^2 }{ \|\mathbf{g}^{(k)}\|_2^2 }β(k)=∥g(k)∥22​∥g(k+1)∥22​​
  • 更新搜索方向:d(k+1)=−g(k+1)+β(k)d(k)\mathbf{d}^{(k+1)} = -\mathbf{g}^{(k+1)} + \beta^{(k)} \mathbf{d}^{(k)}d(k+1)=−g(k+1)+β(k)d(k)
k = 0
g = A @ x - b
d = g.copy()
g_norm = np.dot(g, g)          # 存储 ||g^(k)||^2

while k < N:
    t = A @ d
    s = np.dot(d, t)
    alpha = -np.dot(g, d) / s  # 步长
    x += alpha * d             # 更新解
    g += alpha * t             # 更新梯度
    
    g_norm_new = np.dot(g, g)
    if g_norm_new < EPS:
        break
    
    beta = g_norm_new / g_norm
    g_norm = g_norm_new
    
    d = -g + beta * d          # 更新搜索方向
    k += 1

复杂度分析: 与最速下降法相同,每步主要代价为一次矩阵-向量乘法 Ad(k)\mathbf{A}\mathbf{d}^{(k)}Ad(k),稀疏矩阵下成本为 O(nnz(A))\mathcal{O}(\text{nnz}(\mathbf{A}))O(nnz(A))。 但共轭梯度法在精确算术下至多 nnn 步收敛,实际中通常远少于 nnn 步即可达到精度要求,收敛速度显著优于最速下降法。

共轭梯度法收敛性分析

  • 在 nnn 步内精确收敛(即 x(n)=x∗\mathbf{x}^{(n)} = \mathbf{x}^*x(n)=x∗);
  • 实际中因舍入误差,通常在 k≪nk \ll nk≪n 步即达到所需精度;
  • 收敛速率依赖于特征值分布,但远优于最速下降法。

方法对比与总结

对比

特性最速下降法 (SD)共轭梯度法 (CG)
搜索方向p(k)=−g(k)\mathbf{p}^{(k)} = -\mathbf{g}^{(k)}p(k)=−g(k)(负梯度)d(k)=−g(k)+β(k−1)d(k−1)\mathbf{d}^{(k)} = -\mathbf{g}^{(k)} + \beta^{(k-1)} \mathbf{d}^{(k-1)}d(k)=−g(k)+β(k−1)d(k−1)(A\mathbf{A}A-共轭基)
步长公式α(k)=∥r(k)∥2r(k)TAr(k)\alpha^{(k)} = \dfrac{\|\mathbf{r}^{(k)}\|^2}{\mathbf{r}^{(k)T} \mathbf{A} \mathbf{r}^{(k)}}α(k)=r(k)TAr(k)∥r(k)∥2​α(k)=r(k)Td(k)d(k)TAd(k)\alpha^{(k)} = \dfrac{\mathbf{r}^{(k)T} \mathbf{d}^{(k)}}{\mathbf{d}^{(k)T} \mathbf{A} \mathbf{d}^{(k)}}α(k)=d(k)TAd(k)r(k)Td(k)​
方向正交性⟨r(k−1),r(k)⟩=0\langle \mathbf{r}^{(k-1)}, \mathbf{r}^{(k)} \rangle = 0⟨r(k−1),r(k)⟩=0(相邻)B(d(i),d(j))=0,  i≠jB(\mathbf{d}^{(i)}, \mathbf{d}^{(j)}) = 0, \; i \ne jB(d(i),d(j))=0,i=j(全局 A\mathbf{A}A-共轭)
实际收敛速度慢,∼(λn−λ1λn+λ1)k\sim \left(\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}\right)^k∼(λn​+λ1​λn​−λ1​​)k快,理论上 nnn 步得到精确解,对良态/病态矩阵均稳健
空间复杂度O(n)O(n)O(n)(存 x,r\mathbf{x}, \mathbf{r}x,r)O(n)O(n)O(n)(存 x,r,d\mathbf{x}, \mathbf{r}, \mathbf{d}x,r,d)
时间复杂度1 × matvec (Ar\mathbf{A} \mathbf{r}Ar)1 × matvec (Ad\mathbf{A} \mathbf{d}Ad)
  • 最速下降法的缺陷:负梯度方向在狭长椭球中会反复在主轴间震荡,每次修正仅消除一个方向误差,效率低下。
  • CG 的优势:通过 A\mathbf{A}A-共轭性,确保每次搜索方向独立修正一个主轴方向的误差,相当于在 A-内积下进行正交化搜索,极大提升效率。

预处理共轭梯度法

预处理共轭梯度法(PCG)。实际应用中,为加速 CG 收敛, 常引入预处理矩阵 M≈AM \approx AM≈A(对称正定),求解等价系统:

M−1Ax=M−1bM^{-1} A x = M^{-1} bM−1Ax=M−1b

或更稳定的:

M−1/2AM−1/2y=M−1/2b,x=M−1/2yM^{-1/2} A M^{-1/2} y = M^{-1/2} b, \quad x = M^{-1/2} yM−1/2AM−1/2y=M−1/2b,x=M−1/2y

此时 CG 在 MMM-内积下进行,收敛速率依赖于 κ(M−1A)\kappa(M^{-1}A)κ(M−1A)。常用预处理子:

  • 对角预处理(Jacobi):M=diag(A)M = \text{diag}(A)M=diag(A)
  • 不完全 Cholesky 分解(IC)
  • 代数多重网格(AMG)
目录
  • 迭代法的一般框架
    • Richardson 方法
    • Richardson 方法分类
    • 二次函数极值等价性
    • 向量空间记号约定
  • 最速下降法
    • 搜索方向的确定
    • 步长的确定
    • 梯度正交性
    • 最速下降法代码
    • 最速下降法收敛性分析
  • 共轭梯度法
    • A-共轭与共轭方向
    • 递推构造共轭方向
    • 共轭参数的等价形式
    • 共轭梯度法代码
    • 共轭梯度法收敛性分析
  • 方法对比与总结
    • 对比
    • 预处理共轭梯度法
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo