MINIBLOG

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

解线性方程组的迭代法(Jacobi,Gauss-Seidal,松弛法,收敛性)


简介

对于大规模稀疏线性方程组 Ax=b\mathbf{A}\mathbf{x}=\mathbf{b}Ax=b,直接法(如 LU 分解)存在以下局限:

  • 存储问题:即使 A\mathbf{A}A 是稀疏的,其 LU 分解因子 L\mathbf{L}L 和 U\mathbf{U}U 也可能变得稠密。
  • 计算复杂度:直接法通常是 O(n3)O(n^3)O(n3),对于大规模问题难以承受。

迭代法基本思想:

通过构造迭代格式:

x(k+1)=Mx(k)+g\mathbf{x}^{(k+1)} = \mathbf{M}\mathbf{x}^{(k)} + \mathbf{g}x(k+1)=Mx(k)+g

从一个初始猜测 x(0)\mathbf{x}^{(0)}x(0) 出发,产生近似解序列 {x(k)}\{\mathbf{x}^{(k)}\}{x(k)},期望其收敛到真实解 x∗\mathbf{x}^*x∗。

注:迭代法特别适合大规模稀疏矩阵,因为每次迭代只进行矩阵-向量乘法,可以充分利用稀疏性。


Jacobi 迭代法

Jacobi 迭代格式

将系数矩阵 A\mathbf{A}A 分解为:

A=D−(D−A)=D−B\mathbf{A} = \mathbf{D} - (\mathbf{D} - \mathbf{A}) = \mathbf{D} - \mathbf{B}A=D−(D−A)=D−B

其中 D=diag(a11,a22,…,ann)\mathbf{D} = \text{diag}(a_{11}, a_{22}, \dots, a_{nn})D=diag(a11​,a22​,…,ann​) 为对角矩阵,B=D−A\mathbf{B} = \mathbf{D} - \mathbf{A}B=D−A。

原方程 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}Ax=b 改写为:

Dx=Bx+b\mathbf{D}\mathbf{x} = \mathbf{B}\mathbf{x} + \mathbf{b}Dx=Bx+b

若 aii≠0a_{ii} \neq 0aii​=0(对所有 iii),则 D\mathbf{D}D 可逆,得到 Jacobi 迭代格式:

x(k+1)=D−1(D−A)x(k)+D−1b=Bx(k)+g\mathbf{x}^{(k+1)} = \mathbf{D}^{-1}(\mathbf{D}-\mathbf{A})\mathbf{x}^{(k)} + \mathbf{D}^{-1}\mathbf{b} = \mathbf{B}\mathbf{x}^{(k)} + \mathbf{g}x(k+1)=D−1(D−A)x(k)+D−1b=Bx(k)+g

分量形式:

xi(k+1)=1aii(bi−∑j=1,j≠inaijxj(k)),i=1,2,…,nx_i^{(k+1)} = \frac{1}{a_{ii}}\left(b_i - \sum_{j=1, j\neq i}^{n} a_{ij}x_j^{(k)}\right), \quad i=1,2,\dots,nxi(k+1)​=aii​1​​bi​−j=1,j=i∑n​aij​xj(k)​​,i=1,2,…,n

注:Jacobi迭代的本质是同步更新——每次迭代使用上一步的所有分量值 xj(k)x_j^{(k)}xj(k)​ 来计算当前步的所有分量 xi(k+1)x_i^{(k+1)}xi(k+1)​。

Jacobi 算法流程

输入:A∈Rn×n\mathbf{A} \in \mathbb{R}^{n\times n}A∈Rn×n,初始值 x(0)\mathbf{x}^{(0)}x(0),右端项 b\mathbf{b}b,最大迭代次数 N\text{N}N,误差阈值 EPS\text{EPS}EPS

输出:近似解 x\mathbf{x}x

x_new = np.zeros(n, dtype=float) # 初始值
x_old = np.zeros(n, dtype=float)

k = 0
while k < N:
    k += 1

    for i in range(n):
        x_new[i] = b[i]

        for j in range(n):
            if j != i: # 为减少判断开销可以分开循环
                x_new[i] -= A[i, j] * x_old[j]

        x_new[i] /= A[i, i]

    if np.linalg.norm(x_new - x_old, 2) < EPS:
        break

    x_old = x_new.copy() # 保存旧值

注: 必须先用临时变量保存 x(k)\mathbf{x}^{(k)}x(k) 的所有分量,避免混用新旧值。不过可以交替使用两个数列作为新旧值,只需交换引用而不需要复制数组,减少内存分配和复制的开销。


Gauss-Seidel 迭代法

Gauss-Seidel 迭代格式

观察 Jacobi 方法,在计算 xi(k+1)x_i^{(k+1)}xi(k+1)​ 时,x1(k+1),…,xi−1(k+1)x_1^{(k+1)}, \dots, x_{i-1}^{(k+1)}x1(k+1)​,…,xi−1(k+1)​ 已经计算出来,但 Jacobi 仍然使用旧值 xj(k)x_j^{(k)}xj(k)​(j<ij<ij<i)。

Gauss-Seidel 思想:立即使用最新计算出的分量值(异步更新)。

将 A\mathbf{A}A 分裂为:

A=D−L−U\mathbf{A} = \mathbf{D} - \mathbf{L} - \mathbf{U}A=D−L−U

其中 L\mathbf{L}L 为严格下三角矩阵(对角线为零),U\mathbf{U}U 为严格上三角矩阵。

迭代格式变为:

(D−L)x(k+1)=Ux(k)+b(\mathbf{D} - \mathbf{L})\mathbf{x}^{(k+1)} = \mathbf{U}\mathbf{x}^{(k)} + \mathbf{b}(D−L)x(k+1)=Ux(k)+b

即:

x(k+1)=(D−L)−1Ux(k)+(D−L)−1b\mathbf{x}^{(k+1)} = (\mathbf{D}-\mathbf{L})^{-1}\mathbf{U}\mathbf{x}^{(k)} + (\mathbf{D}-\mathbf{L})^{-1}\mathbf{b}x(k+1)=(D−L)−1Ux(k)+(D−L)−1b

分量形式:

xi(k+1)=1aii(bi−∑j=1i−1aijxj(k+1)−∑j=i+1naijxj(k)),i=1,2,…,nx_i^{(k+1)} = \frac{1}{a_{ii}}\left(b_i - \sum_{j=1}^{i-1} a_{ij}x_j^{(k+1)} - \sum_{j=i+1}^{n} a_{ij}x_j^{(k)}\right), \quad i=1,2,\dots,nxi(k+1)​=aii​1​(bi​−j=1∑i−1​aij​xj(k+1)​−j=i+1∑n​aij​xj(k)​),i=1,2,…,n

注:与 Jacobi 的关键区别在于求和项 ∑j=1i−1\sum_{j=1}^{i-1}∑j=1i−1​ 使用的是当前步已更新的 xj(k+1)x_j^{(k+1)}xj(k+1)​。

Gauss-Seidel 算法流程

输入:A∈Rn×n\mathbf{A} \in \mathbb{R}^{n\times n}A∈Rn×n,初始值 x(0)\mathbf{x}^{(0)}x(0),右端项 b\mathbf{b}b,最大迭代次数 N\text{N}N,误差阈值 EPS\text{EPS}EPS

输出:近似解 x\mathbf{x}x

x_new = np.zeros(n, dtype=float) # 初始值
x_old = np.zeros(n, dtype=float)

k = 0
while k < N:
    k += 1

    for i in range(n):
        x_new[i] = b[i]
        
        for j in range(i): # 使用新值
            x_new[i] -= A[i, j] * x_new[j]

        for j in range(i + 1, n): # 使用旧值
            x_new[i] -= A[i, j] * x_old[j] # 也可以写成 x_new
        
        x_new[i] /= A[i, i]

    if np.linalg.norm(x_new - x_old, 2) < EPS:
        break

    x_old = x_new.copy() # 保存旧值

注:

  • Gauss-Seidel 通常比 Jacobi 收敛更快。
  • 但 Jacobi 是同步的,每个分量的更新只依赖上一轮迭代的旧值,可以进行并行计算,而 Gauss-Seidel 是串行依赖的,每个分量的更新依赖同一轮迭代的新值,所以只能串行。
  • 计算时实际上可以直接都使用 x_new,但是为了判断收敛不得不保存 x_old,所以使用 x_old 更加清晰。

松弛法

松弛法(Successive Over-Relaxation, SOR)。

SOR 迭代格式

Gauss-Seidel 的更新可看作在当前解 x(k)\mathbf{x}^{(k)}x(k) 上加上一个修正量:

x(k+1)=x(k)+Δx\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \Delta\mathbf{x}x(k+1)=x(k)+Δx

其中:

Δx=D−1[Lx(k+1)+Ux(k)+b−Dx(k)]\quad \Delta\mathbf{x} = \mathbf{D}^{-1}[\mathbf{L}\mathbf{x}^{(k+1)} + \mathbf{U}\mathbf{x}^{(k)} + \mathbf{b} - \mathbf{D}\mathbf{x}^{(k)}]Δx=D−1[Lx(k+1)+Ux(k)+b−Dx(k)]

松弛法思想:引入松弛因子 ω\omegaω 对修正量进行加权:

x(k+1)=x(k)+ωΔx\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \omega \Delta\mathbf{x}x(k+1)=x(k)+ωΔx

整理得 SOR 迭代格式:

(D−ωL)x(k+1)=[(1−ω)D+ωU]x(k)+ωb(\mathbf{D} - \omega\mathbf{L})\mathbf{x}^{(k+1)} = [(1-\omega)\mathbf{D} + \omega\mathbf{U}]\mathbf{x}^{(k)} + \omega\mathbf{b}(D−ωL)x(k+1)=[(1−ω)D+ωU]x(k)+ωb

即:

x(k+1)=(D−ωL)−1[(1−ω)D+ωU]x(k)+ω(D−ωL)−1b\mathbf{x}^{(k+1)} = (\mathbf{D}-\omega\mathbf{L})^{-1}[(1-\omega)\mathbf{D} + \omega\mathbf{U}]\mathbf{x}^{(k)} + \omega(\mathbf{D}-\omega\mathbf{L})^{-1}\mathbf{b}x(k+1)=(D−ωL)−1[(1−ω)D+ωU]x(k)+ω(D−ωL)−1b

分量形式:

xi(k+1)=(1−ω)xi(k)+ωaii(bi−∑j=1i−1aijxj(k+1)−∑j=i+1naijxj(k))x_i^{(k+1)} = (1-\omega)x_i^{(k)} + \frac{\omega}{a_{ii}} \left(b_i - \sum_{j=1}^{i-1} a_{ij}x_j^{(k+1)} - \sum_{j=i+1}^{n} a_{ij}x_j^{(k)} \right)xi(k+1)​=(1−ω)xi(k)​+aii​ω​(bi​−j=1∑i−1​aij​xj(k+1)​−j=i+1∑n​aij​xj(k)​)

注:

  • ω=1\omega = 1ω=1:退化为 Gauss-Seidel 方法
  • 0<ω<10 < \omega < 10<ω<1:低松弛法(亚松弛法),常用于非正定系统或震荡情况
  • 1<ω<21 < \omega < 21<ω<2:超松弛法,用于加速收敛
  • ω≥2\omega \geq 2ω≥2 或 ω≤0\omega \leq 0ω≤0:通常不收敛(对正定矩阵)

SOR 算法流程

输入:增加松弛因子 omega\text{omega}omega

输出:近似解 x\mathbf{x}x

x_new = np.zeros(n, dtype=float) # 初始值
x_old = np.zeros(n, dtype=float)

k = 0
while k < N:
    k += 1

    for i in range(n):
        # 先计算 delta x
        x_new[i] = b[i]
        
        for j in range(i): # 使用新值
            x_new[i] -= A[i, j] * x_new[j]

        for j in range(i + 1, n): # 使用旧值
            x_new[i] -= A[i, j] * x_old[j] # 也可以写成 x_new
        
        x_new[i] = x_new[i] * omega / A[i, i]

        # 再加上 x^(k)
        x_new[i] = x_new[i] + (1 - omega) * x_old[i]
    
    if np.linalg.norm(x_new - x_old, 2) < EPS:
        break
    
    x_old = x_new.copy() # 保存旧值

注:最优松弛因子 ωopt\omega_{\text{opt}}ωopt​ 通常介于 0.9-1.5 之间,具体值与矩阵谱性质有关。对于特殊矩阵(如相容次序矩阵),有理论公式计算 ωopt\omega_{\text{opt}}ωopt​。


迭代法的收敛性

统一迭代格式

三种方法可统一写成:

x(k+1)=Mx(k)+g\mathbf{x}^{(k+1)} = \mathbf{M}\mathbf{x}^{(k)} + \mathbf{g}x(k+1)=Mx(k)+g
方法迭代矩阵 M\mathbf{M}M向量 g\mathbf{g}g
JacobiMJ=D−1(D−A)=I−D−1A\mathbf{M}_J = \mathbf{D}^{-1}(\mathbf{D}-\mathbf{A}) = \mathbf{I} - \mathbf{D}^{-1}\mathbf{A}MJ​=D−1(D−A)=I−D−1AgJ=D−1b\mathbf{g}_J = \mathbf{D}^{-1}\mathbf{b}gJ​=D−1b
Gauss-SeidelMGS=(D−L)−1U\mathbf{M}_{GS} = (\mathbf{D}-\mathbf{L})^{-1}\mathbf{U}MGS​=(D−L)−1UgGS=(D−L)−1b\mathbf{g}_{GS} = (\mathbf{D}-\mathbf{L})^{-1}\mathbf{b}gGS​=(D−L)−1b
SORMSOR=(D−ωL)−1[(1−ω)D+ωU]\mathbf{M}_{SOR} = (\mathbf{D}-\omega\mathbf{L})^{-1}[(1-\omega)\mathbf{D} + \omega\mathbf{U}]MSOR​=(D−ωL)−1[(1−ω)D+ωU]gSOR=ω(D−ωL)−1b\mathbf{g}_{SOR} = \omega(\mathbf{D}-\omega\mathbf{L})^{-1}\mathbf{b}gSOR​=ω(D−ωL)−1b

两个引理

定义(谱半径):矩阵 A∈Cn×n\mathbf{A} \in \mathbb{C}^{n \times n}A∈Cn×n 的特征值 λ1,λ2,⋯ ,λn\lambda_1, \lambda_2, \cdots, \lambda_nλ1​,λ2​,⋯,λn​,则其谱半径为

ρ(A)=max⁡1≤i≤n∣λi∣\rho(\mathbf{A}) = \max_{1 \le i \le n} \vert \lambda_i \vertρ(A)=1≤i≤nmax​∣λi​∣

先证明两个引理:

引理 1(范数逼近引理): 对任意 ε>0\varepsilon > 0ε>0,存在矩阵范数 ∥⋅∥ε\|\cdot\|_\varepsilon∥⋅∥ε​ 使得

ρ(A)≤∥A∥ε≤ρ(A)+ε\rho(\mathbf{A}) \leq \|\mathbf{A}\|_\varepsilon \leq \rho(\mathbf{A}) + \varepsilonρ(A)≤∥A∥ε​≤ρ(A)+ε

引理 1 的证明:

设 A\mathbf{A}A 的 Jordan 标准形为 J=P−1AP\mathbf{J} = \mathbf{P}^{-1}\mathbf{A}\mathbf{P}J=P−1AP,其中:

J=(J1⋱Jm)\mathbf{J} = \begin{pmatrix} \mathbf{J}_1 & & \\ & \ddots & \\ & & \mathbf{J}_m \end{pmatrix}J=​J1​​⋱​Jm​​​

每个 Jordan 块 Ji\mathbf{J}_iJi​ 对应特征值 λi\lambda_iλi​:

Ji=λiIni+Nni\mathbf{J}_i = \lambda_i \mathbf{I}_{n_i} + \mathbf{N}_{n_i}Ji​=λi​Ini​​+Nni​​

其中 Nni\mathbf{N}_{n_i}Nni​​ 是 ni×nin_i \times n_ini​×ni​ 的严格上三角幂零矩阵,只有次对角线为 1。

对每个 Jordan 块,定义对角矩阵:

Dni(ε)=diag(1,ε,ε2,…,εni−1)\mathbf{D}_{n_i}(\varepsilon) = \text{diag}(1, \varepsilon, \varepsilon^2, \ldots, \varepsilon^{n_i-1})Dni​​(ε)=diag(1,ε,ε2,…,εni​−1)

计算 Jordan 块的相似变换:

D−1JiD=(λiελi⋱⋱ελi)=λiI+εNni\mathbf{D}^{-1}\mathbf{J}_i\mathbf{D} = \begin{pmatrix} \lambda_i & \varepsilon & & \\ & \lambda_i & \ddots & \\ & & \ddots & \varepsilon \\ & & & \lambda_i \end{pmatrix} = \lambda_i \mathbf{I} + \varepsilon\mathbf{N}_{n_i}D−1Ji​D=​λi​​ελi​​⋱⋱​ελi​​​=λi​I+εNni​​

取 D(ε)=diag(Dn1(ε),…,Dnm(ε))\mathbf{D}(\varepsilon) = \text{diag}(\mathbf{D}_{n_1}(\varepsilon), \ldots, \mathbf{D}_{n_m}(\varepsilon))D(ε)=diag(Dn1​​(ε),…,Dnm​​(ε)),令整体相似变换后矩阵:

A(ε)=D−1(ε)JD(ε)=D−1(ε)P−1APD(ε)\mathbf{A}(\varepsilon) = \mathbf{D}^{-1}(\varepsilon)\mathbf{J}\mathbf{D}(\varepsilon) = \mathbf{D}^{-1}(\varepsilon)\mathbf{P}^{-1}\mathbf{A}\mathbf{P}\mathbf{D}(\varepsilon)A(ε)=D−1(ε)JD(ε)=D−1(ε)P−1APD(ε)

计算 A(ε)\mathbf{A}(\varepsilon)A(ε) 的行和范数 ∥⋅∥∞\|\cdot\|_\infty∥⋅∥∞​:

∥A(ε)∥∞=max⁡i∑j∣[A(ε)]ij∣=max⁡i∣λi∣+ε=ρ(A)+ε\|\mathbf{A}(\varepsilon)\|_\infty = \max_i \sum_j |[\mathbf{A}(\varepsilon)]_{ij}| = \max_i |\lambda_i| + \varepsilon = \rho(\mathbf{A}) + \varepsilon∥A(ε)∥∞​=imax​j∑​∣[A(ε)]ij​∣=imax​∣λi​∣+ε=ρ(A)+ε

接下来利用上一节课的补充内容: 向量范数的可逆变换 以及 矩阵范数的相似变换, 构造一个诱导范数,使其值恰好等于相似变换后矩阵的行和范数。

定义向量范数:

∥x∥ε:=∥(PD(ε))−1x∥∞\|\mathbf{x}\|_\varepsilon := \|(\mathbf{P}\mathbf{D}(\varepsilon))^{-1}\mathbf{x}\|_\infty∥x∥ε​:=∥(PD(ε))−1x∥∞​

对应的诱导范数:

∥A∥ε=max⁡∥x∥ε=1∥Ax∥ε\|\mathbf{A}\|_\varepsilon = \max_{\|\mathbf{x}\|_\varepsilon=1} \|\mathbf{A}\mathbf{x}\|_\varepsilon∥A∥ε​=∥x∥ε​=1max​∥Ax∥ε​

则:

∥A∥ε=∥(PD)−1A(PD)∥∞=∥A(ε)∥∞=ρ(A)+ε\|\mathbf{A}\|_\varepsilon = \|(\mathbf{P}\mathbf{D})^{-1}\mathbf{A}(\mathbf{P}\mathbf{D})\|_\infty = \|\mathbf{A}(\varepsilon)\|_\infty = \rho(\mathbf{A}) + \varepsilon∥A∥ε​=∥(PD)−1A(PD)∥∞​=∥A(ε)∥∞​=ρ(A)+ε

从而完成证明(构造)。当然左侧的不等式也可以由上节课的有关内容得到。

注:由于矩阵范数的选取依赖于 ε\varepsilonε,故不能令 ε→0\varepsilon \to 0ε→0,也即不一定存在一个范数使得 ∥A∥=ρ(A)\|\mathbf{A}\| = \rho(\mathbf{A})∥A∥=ρ(A)

引理 2(幂零与谱半径的关系):

设 A∈Cn×n\mathbf{A} \in \mathbb{C}^{n \times n}A∈Cn×n,则:

lim⁡k→∞Ak=0  ⟺  ρ(A)<1\lim_{k\to\infty} \mathbf{A}^k = \mathbf{0} \iff \rho(\mathbf{A}) < 1k→∞lim​Ak=0⟺ρ(A)<1

其中 Ak→0\mathbf{A}^k \to \mathbf{0}Ak→0 等价于 ∥Ak∥→0\|\mathbf{A}^k\| \to 0∥Ak∥→0,∥⋅∥\|\cdot\|∥⋅∥ 是某一(由范数等价性也即任意)矩阵范数。

引理 2 的证明:

⇐\Leftarrow⇐ 方向:

由 引理 1(范数逼近引理):对任意 ε>0\varepsilon > 0ε>0,存在矩阵范数 ∥⋅∥\|\cdot\|∥⋅∥,使得

∥A∥≤ρ(A)+ε\|\mathbf{A}\| \leq \rho(\mathbf{A}) + \varepsilon∥A∥≤ρ(A)+ε

取 ε=1−ρ(A)2>0\varepsilon = \frac{1 - \rho(\mathbf{A})}{2} > 0ε=21−ρ(A)​>0,则

∥A∥≤ρ(A)+1−ρ(A)2=1+ρ(A)2≡q<1\|\mathbf{A}\| \leq \rho(\mathbf{A}) + \frac{1 - \rho(\mathbf{A})}{2} = \frac{1 + \rho(\mathbf{A})}{2} \equiv q < 1∥A∥≤ρ(A)+21−ρ(A)​=21+ρ(A)​≡q<1

结合矩阵范数的相容性(次可乘性) 得:

∥Ak∥≤∥A∥k≤qk\|\mathbf{A}^k\| \leq \|\mathbf{A}\|^k \leq q^k∥Ak∥≤∥A∥k≤qk

故 lim⁡k→∞∥Ak∥=0\lim_{k \to \infty} \|\mathbf{A}^k\| = 0limk→∞​∥Ak∥=0。

⇒\Rightarrow⇒ 方向:用反证法。

假设 ρ(A)≥1\rho(\mathbf{A}) \geq 1ρ(A)≥1,则存在特征值 λ\lambdaλ 满足 ∣λ∣≥1|\lambda| \geq 1∣λ∣≥1。 设 v≠0\mathbf{v} \neq \mathbf{0}v=0 为对应的特征向量,Av=λv\mathbf{A} \mathbf{v} = \lambda \mathbf{v}Av=λv,则有:

Akv=λkv\mathbf{A}^k \mathbf{v} = \lambda^k \mathbf{v}Akv=λkv

若 Ak→0\mathbf{A}^k \to \mathbf{0}Ak→0,则对任意向量 x\mathbf{x}x 有 Akx→0\mathbf{A}^k \mathbf{x} \to \mathbf{0}Akx→0。特别地,取 x=v\mathbf{x} = \mathbf{v}x=v:

lim⁡k→∞Akv=lim⁡k→∞λkv=0\lim_{k \to \infty} \mathbf{A}^k \mathbf{v} = \lim_{k \to \infty} \lambda^k \mathbf{v} = \mathbf{0}k→∞lim​Akv=k→∞lim​λkv=0

由于 v≠0\mathbf{v} \neq \mathbf{0}v=0,这要求 lim⁡k→∞λk=0\lim_{k \to \infty} \lambda^k = 0limk→∞​λk=0,与 ∣λ∣≥1|\lambda| \geq 1∣λ∣≥1 矛盾!

注:引理 2 的 ⇐\Leftarrow⇐ 方向还可以直接用 Jordan 分解与二项式展开进行剥蒜证明。

收敛的充要条件

基本收敛定理:

迭代格式对任意初始向量 x(0)\mathbf{x}^{(0)}x(0) 都收敛的充分必要条件是:

ρ(M)<1\rho(\mathbf{M}) < 1ρ(M)<1

证明:

  • 有如下误差传播关系:

    e(k)=x(k)−x∗=Mke(0)\mathbf{e}^{(k)} = \mathbf{x}^{(k)} - \mathbf{x}^* = \mathbf{M}^k \mathbf{e}^{(0)}e(k)=x(k)−x∗=Mke(0)

    这是因为

    e(k+1)=x(k+1)−x∗=Mx(k)+g−Mx∗−g=Me(k)\begin{aligned} \mathbf{e}^{(k+1)} &= \mathbf{x}^{(k+1)} - \mathbf{x}^* \\ &= \mathbf{M} \mathbf{x}^{(k)} + \mathbf{g} - \mathbf{M} \mathbf{x}^* - \mathbf{g} \\ &= \mathbf{M} \mathbf{e}^{(k)} \end{aligned}e(k+1)​=x(k+1)−x∗=Mx(k)+g−Mx∗−g=Me(k)​
  • 由引理 2 知

    lim⁡k→∞Mk=0  ⟺  ρ(M)<1\lim_{k\to\infty} \mathbf{M}^k = \mathbf{0} \iff \rho(\mathbf{M}) < 1k→∞lim​Mk=0⟺ρ(M)<1

    从而完成证明。

收敛的充分条件

由于计算谱半径较困难,可以使用矩阵范数作为估计。

定理:若存在某个矩阵范数 ∥⋅∥\|\cdot\|∥⋅∥ 使得

∥M∥<1\|\mathbf{M}\| < 1∥M∥<1

则迭代法收敛。

证明:

由 ρ(M)≤∥M∥\rho(\mathbf{M}) \le \|\mathbf{M}\|ρ(M)≤∥M∥ 对任意矩阵范数成立易知。

收敛速率分析

定义(平均收敛速率): 对任意矩阵范数 ∥⋅∥\|\cdot\|∥⋅∥,定义对应的平均收敛速率:

Rk(M)=−1kln⁡∥Mk∥R_k(\mathbf{M}) = -\frac{1}{k}\ln\|\mathbf{M}^k\|Rk​(M)=−k1​ln∥Mk∥

定义(渐进收敛速率): 对格式矩阵 M\mathbf{M}M,定义其渐进收敛速率:

R∞(M)=lim⁡k→∞Rk(M)=−ln⁡ρ(M)R_\infty(\mathbf{M}) = \lim_{k\to\infty} R_k(\mathbf{M}) = -\ln\rho(\mathbf{M})R∞​(M)=k→∞lim​Rk​(M)=−lnρ(M)

证明:

即证如下 Gelfand 谱半径公式:

lim⁡k→∞∥Mk∥1/k=ρ(M)\lim_{k\to\infty} \|\mathbf{M}^k\|^{1/k} = \rho(\mathbf{M})k→∞lim​∥Mk∥1/k=ρ(M)
  • 上界:

    对任意矩阵范数 ∥⋅∥\|\cdot\|∥⋅∥,有谱半径不等式:

    ρ(M)≤∥M∥\rho(\mathbf{M}) \leq \|\mathbf{M}\|ρ(M)≤∥M∥

    对 Mk\mathbf{M}^kMk 应用此不等式,并结合 ρ(Mk)=ρ(M)k\rho(\mathbf{M}^k) = \rho(\mathbf{M})^kρ(Mk)=ρ(M)k 得:

    ρ(M)≤∥Mk∥1/k\rho(\mathbf{M}) \leq \|\mathbf{M}^k\|^{1/k}ρ(M)≤∥Mk∥1/k

    令 k→∞k \to \inftyk→∞,得:

    ρ(M)≤lim inf⁡k→∞∥Mk∥1/k\rho(\mathbf{M}) \leq \liminf_{k\to\infty} \|\mathbf{M}^k\|^{1/k}ρ(M)≤k→∞liminf​∥Mk∥1/k
  • 下界:

    利用引理 1(范数逼近引理):对任意 ε>0\varepsilon > 0ε>0,存在矩阵范数 ∥⋅∥ε\|\cdot\|_\varepsilon∥⋅∥ε​ 使得:

    ∥M∥ε≤ρ(M)+ε\|\mathbf{M}\|_\varepsilon \leq \rho(\mathbf{M}) + \varepsilon∥M∥ε​≤ρ(M)+ε

    于是:

    ∥Mk∥ε1/k≤(∥M∥εk)1/k=∥M∥ε≤ρ(M)+ε\|\mathbf{M}^k\|_\varepsilon^{1/k} \leq \left(\|\mathbf{M}\|_\varepsilon^k\right)^{1/k} = \|\mathbf{M}\|_\varepsilon \leq \rho(\mathbf{M}) + \varepsilon∥Mk∥ε1/k​≤(∥M∥εk​)1/k=∥M∥ε​≤ρ(M)+ε

    由于所有矩阵范数等价,因此存在常数 C>0C > 0C>0 使得 ∥A∥≤C∥A∥ε\|\mathbf{A}\| \leq C\|\mathbf{A}\|_\varepsilon∥A∥≤C∥A∥ε​,也即:

    ∥Mk∥1/k≤C1/k∥Mk∥ε1/k≤C1/k(ρ(M)+ε)\|\mathbf{M}^k\|^{1/k} \leq C^{1/k} \|\mathbf{M}^k\|_\varepsilon^{1/k} \leq C^{1/k}(\rho(\mathbf{M}) + \varepsilon)∥Mk∥1/k≤C1/k∥Mk∥ε1/k​≤C1/k(ρ(M)+ε)

    令 k→∞k \to \inftyk→∞ 即得:

    lim sup⁡k→∞∥Mk∥1/k≤ρ(M)+ε\limsup_{k\to\infty} \|\mathbf{M}^k\|^{1/k} \leq \rho(\mathbf{M}) + \varepsilonk→∞limsup​∥Mk∥1/k≤ρ(M)+ε

    由 ε\varepsilonε 的任意性,令 ε→0+\varepsilon \to 0^+ε→0+:

    lim sup⁡k→∞∥Mk∥1/k≤ρ(M)\limsup_{k\to\infty} \|\mathbf{M}^k\|^{1/k} \leq \rho(\mathbf{M})k→∞limsup​∥Mk∥1/k≤ρ(M)

证毕。

注:

  • 误差显然是指数形式收敛的。我们估计的是 exp⁡{−R(M)k}\exp\{-\mathbf{R(\mathbf{M}) k}\}exp{−R(M)k} 形式。
  • 渐进收敛速率由谱半径唯一确定,也即渐进收敛形式为 ρ(M)k\rho(\mathbf{M})^kρ(M)k。
  • 由此可见谱半径越小,收敛越快。

终止条件估计

利用谱半径估计:

为达到误差 ∥e(k)∥≤ε\|\mathbf{e}^{(k)}\| \leq \varepsilon∥e(k)∥≤ε,所需迭代次数约为(假设初始误差为 1):

k≈ln⁡εln⁡ρ(M)k \approx \frac{\ln\varepsilon}{\ln\rho(\mathbf{M})}k≈lnρ(M)lnε​

利用矩阵范数估计:

若某一矩阵范数下 ∥M∥=q<1\|\mathbf{M}\| = q < 1∥M∥=q<1,则:

∥x(k)−x∗∥≤q1−q∥x(k)−x(k−1)∥≤qk1−q∥x(1)−x(0)∥\|\mathbf{x}^{(k)} - \mathbf{x}^*\| \leq \frac{q}{1-q}\|\mathbf{x}^{(k)} - \mathbf{x}^{(k-1)}\| \leq \frac{q^k}{1-q}\|\mathbf{x}^{(1)} - \mathbf{x}^{(0)}\|∥x(k)−x∗∥≤1−qq​∥x(k)−x(k−1)∥≤1−qqk​∥x(1)−x(0)∥

从而当 ∥x(k)−x(k−1)∥<1−qqε\|\mathbf{x}^{(k)} - \mathbf{x}^{(k-1)}\| < \frac{1-q}{q}\varepsilon∥x(k)−x(k−1)∥<q1−q​ε 时, 可保证 ∥x(k)−x∗∥<ε\|\mathbf{x}^{(k)} - \mathbf{x}^*\| < \varepsilon∥x(k)−x∗∥<ε。

证明:

x(k)−x∗=M(x(k−1)−x∗)=M(x(k−1)−x(k)+x(k)−x∗)\mathbf{x}^{(k)} - \mathbf{x}^* = \mathbf{M}(\mathbf{x}^{(k-1)} - \mathbf{x}^*) = \mathbf{M}(\mathbf{x}^{(k-1)} - \mathbf{x}^{(k)} + \mathbf{x}^{(k)} - \mathbf{x}^*)x(k)−x∗=M(x(k−1)−x∗)=M(x(k−1)−x(k)+x(k)−x∗)

从而由三角不等式:

∥x(k)−x∗∥≤q∥x(k−1)−x(k)∥+q∥x(k)−x∗∥\|\mathbf{x}^{(k)} - \mathbf{x}^*\| \le q \|\mathbf{x}^{(k-1)} - \mathbf{x}^{(k)}\| + q \|\mathbf{x}^{(k)} - \mathbf{x}^*\|∥x(k)−x∗∥≤q∥x(k−1)−x(k)∥+q∥x(k)−x∗∥

化简即证。

特殊矩阵的收敛性

相关定义

定义(对角占优矩阵): 矩阵 A\mathbf{A}A 称为对角占优,若:

∣aii∣≥∑j≠i∣aij∣,∀i=1,…,n|a_{ii}| \geq \sum_{j\neq i}|a_{ij}|, \quad \forall i=1,\dots,n∣aii​∣≥j=i∑​∣aij​∣,∀i=1,…,n

且至少对一个 iii 严格不等式成立。若对所有 iii 都严格成立,则称为严格对角占优。

定义(不可约矩阵): 矩阵 A∈Rn×n\mathbf{A}\in\mathbb{R}^{n\times n}A∈Rn×n 称为可约的,若存在排列矩阵 P\mathbf{P}P 使得:

PTAP=[A11A120A22]\mathbf{P}^{\mathrm{T}}\mathbf{A}\mathbf{P}=\begin{bmatrix}\mathbf{A}_{11}&\mathbf{A}_{12}\\ \mathbf{0}&\mathbf{A}_{22}\end{bmatrix}PTAP=[A11​0​A12​A22​​]

其中 A11,A22\mathbf{A}_{11}, \mathbf{A}_{22}A11​,A22​ 为方阵。否则称 A\mathbf{A}A 为不可约的。

不可约矩阵等价定义: 存在指标集的非空划分 S∪T={1,…,n}\mathcal{S}\cup\mathcal{T}=\{1,\dots,n\}S∪T={1,…,n},使得 aij=0a_{ij}=0aij​=0 对所有 i∈S,j∈Ti\in\mathcal{S}, j\in\mathcal{T}i∈S,j∈T 成立。

证明:这是显然的。

标准分裂记号:

A=D+L+U\mathbf{A} = \mathbf{D} + \mathbf{L} + \mathbf{U}A=D+L+U

其中 D\mathbf{D}D 为对角部分,L\mathbf{L}L 为严格下三角部分(i>ji>ji>j 时 lij=aijl_{ij}=a_{ij}lij​=aij​),U\mathbf{U}U 为严格上三角部分(i<ji<ji<j 时 uij=aiju_{ij}=a_{ij}uij​=aij​)。

对应迭代矩阵:

  • Jacobi:MJ=−D−1(L+U)\mathbf{M}_J = -\mathbf{D}^{-1}(\mathbf{L}+\mathbf{U})MJ​=−D−1(L+U)
  • Gauss-Seidel:MGS=−(D+L)−1U\mathbf{M}_{GS} = -(\mathbf{D}+\mathbf{L})^{-1}\mathbf{U}MGS​=−(D+L)−1U

注:这类矩阵常见于离散偏微分方程(如有限差分、有限元)

严格对角占优矩阵的收敛性

若迭代格式矩阵 A\mathbf{A}A 严格对角占优,则

  • A\mathbf{A}A 非奇异
  • Jacobi 迭代法对任意初始向量收敛
  • Gauss-Seidel 迭代法对任意初始向量收敛

严格对角占优矩阵非奇异性证明

反设 A\mathbf{A}A 奇异,则存在非零向量 x∈Rn\mathbf{x}\in\mathbb{R}^nx∈Rn 使得 Ax=0\mathbf{A}\mathbf{x} = \mathbf{0}Ax=0。

设 ∣xi∣=max⁡1≤j≤n∣xj∣>0|\mathbf{x}_i| = \max_{1\leq j\leq n}|\mathbf{x}_j| > 0∣xi​∣=max1≤j≤n​∣xj​∣>0,考虑第 iii 个方程:

∑j=1naijxj=0  ⟹  aiixi=−∑j≠iaijxj\sum_{j=1}^n a_{ij}\mathbf{x}_j = 0 \implies a_{ii}\mathbf{x}_i = -\sum_{j\neq i}a_{ij}\mathbf{x}_jj=1∑n​aij​xj​=0⟹aii​xi​=−j=i∑​aij​xj​

取绝对值并利用三角不等式:

∣aii∣∣xi∣=∣∑j≠iaijxj∣≤∑j≠i∣aij∣∣xj∣≤∑j≠i∣aij∣∣xi∣|a_{ii}||\mathbf{x}_i| = \left|\sum_{j\neq i}a_{ij}\mathbf{x}_j\right| \leq \sum_{j\neq i}|a_{ij}||\mathbf{x}_j| \leq \sum_{j\neq i}|a_{ij}||\mathbf{x}_i|∣aii​∣∣xi​∣=​j=i∑​aij​xj​​≤j=i∑​∣aij​∣∣xj​∣≤j=i∑​∣aij​∣∣xi​∣

两边除以 ∣xi∣>0|\mathbf{x}_i| > 0∣xi​∣>0 得:

∣aii∣≤∑j≠i∣aij∣|a_{ii}| \leq \sum_{j\neq i}|a_{ij}|∣aii​∣≤j=i∑​∣aij​∣

这与 A\mathbf{A}A 严格对角占优矛盾!

严格对角占优矩阵 Jacobi 迭代收敛性证明

迭代矩阵 MJ=−D−1(L+U)\mathbf{M}_J = -\mathbf{D}^{-1}(\mathbf{L}+\mathbf{U})MJ​=−D−1(L+U),其元素为:

(MJ)ij={0,i=j−aijaii,i≠j(\mathbf{M}_J)_{ij} = \begin{cases} 0, & i=j \\ -\frac{a_{ij}}{a_{ii}}, & i\neq j \end{cases}(MJ​)ij​={0,−aii​aij​​,​i=ji=j​

计算行和范数:

∥MJ∥∞=max⁡1≤i≤n∑j≠i∣aijaii∣=max⁡1≤i≤n1∣aii∣∑j≠i∣aij∣\|\mathbf{M}_J\|_\infty = \max_{1\leq i\leq n}\sum_{j\neq i}\left|\frac{a_{ij}}{a_{ii}}\right| = \max_{1\leq i\leq n}\frac{1}{|a_{ii}|}\sum_{j\neq i}|a_{ij}|∥MJ​∥∞​=1≤i≤nmax​j=i∑​​aii​aij​​​=1≤i≤nmax​∣aii​∣1​j=i∑​∣aij​∣

由严格对角占优条件 ∣aii∣>∑j≠i∣aij∣|a_{ii}| > \sum_{j\neq i}|a_{ij}|∣aii​∣>∑j=i​∣aij​∣,得:

∥MJ∥∞<1\|\mathbf{M}_J\|_\infty < 1∥MJ​∥∞​<1

因此 Jacobi 迭代收敛。

严格对角占优矩阵 Gauss-Seidel 迭代收敛性证明

反证法证明 ρ(MGS)<1\rho(\mathbf{M}_{GS}) < 1ρ(MGS​)<1。反设 λ\lambdaλ 为 MGS\mathbf{M}_{GS}MGS​ 的特征值且 ∣λ∣≥1|\lambda| \geq 1∣λ∣≥1。特征方程为:

det⁡(λI−MGS)=det⁡(λI+(D+L)−1U)=0\det(\lambda\mathbf{I} - \mathbf{M}_{GS}) = \det(\lambda\mathbf{I} + (\mathbf{D}+\mathbf{L})^{-1}\mathbf{U}) = 0det(λI−MGS​)=det(λI+(D+L)−1U)=0

等价于:

det⁡(λ(D+L)+U)=0\det(\lambda(\mathbf{D}+\mathbf{L}) + \mathbf{U}) = 0det(λ(D+L)+U)=0

令 B(λ)=λ(D+L)+U\mathbf{B}(\lambda) = \lambda(\mathbf{D}+\mathbf{L}) + \mathbf{U}B(λ)=λ(D+L)+U,其元素为:

bij={λaii,i=jλaij,i>jaij,i<jb_{ij} = \begin{cases} \lambda a_{ii}, & i=j \\ \lambda a_{ij}, & i>j\\ a_{ij}, & i<j \end{cases}bij​=⎩⎨⎧​λaii​,λaij​,aij​,​i=ji>ji<j​

容易发现 B(λ)\mathbf{B}(\lambda)B(λ) 仍是严格对角占优矩阵,故其非奇异,与 det⁡(B(λ))=0\det(\mathbf{B}(\lambda))=0det(B(λ))=0 矛盾!


不可约对角占优矩阵的收敛性

若迭代格式矩阵 A\mathbf{A}A 不可约对角占优,则

  • A\mathbf{A}A 非奇异
  • Jacobi 迭代法对任意初始向量收敛
  • Gauss-Seidel 迭代法对任意初始向量收敛

不可约对角占优矩阵非奇异性证明

反设 A\mathbf{A}A 奇异,则存在非零向量 x\mathbf{x}x 使 Ax=0\mathbf{A}\mathbf{x}=\mathbf{0}Ax=0。

设 ∣xk∣=max⁡1≤j≤n∣xj∣>0|\mathbf{x}_k| = \max_{1\leq j\leq n}|\mathbf{x}_j| > 0∣xk​∣=max1≤j≤n​∣xj​∣>0,考虑第 kkk 个方程:

∑j=1nakjxj=0  ⟹  akkxk=−∑j≠kakjxj\sum_{j=1}^n a_{kj}\mathbf{x}_j = 0 \implies a_{kk}\mathbf{x}_k = -\sum_{j\neq k}a_{kj}\mathbf{x}_jj=1∑n​akj​xj​=0⟹akk​xk​=−j=k∑​akj​xj​

从而:

∣akk∣∣xk∣=∣∑j≠kakjxj∣≤∑j≠k∣akj∣∣xj∣≤∑j≠k∣akj∣∣xk∣|a_{kk}||\mathbf{x}_k| = \left|\sum_{j\neq k}a_{kj}\mathbf{x}_j\right| \leq \sum_{j\neq k}|a_{kj}||\mathbf{x}_j| \leq \sum_{j\neq k}|a_{kj}||\mathbf{x}_k|∣akk​∣∣xk​∣=​j=k∑​akj​xj​​≤j=k∑​∣akj​∣∣xj​∣≤j=k∑​∣akj​∣∣xk​∣

由对角占优 ∣akk∣≥∑j≠k∣akj∣|a_{kk}| \geq \sum_{j\neq k}|a_{kj}|∣akk​∣≥∑j=k​∣akj​∣,上式等号成立,故 ∣xj∣=∣xk∣|\mathbf{x}_j| = |\mathbf{x}_k|∣xj​∣=∣xk​∣ 对所有满足 akj≠0a_{kj}\neq 0akj​=0 的 jjj 成立。

令指标集 S={i:∣xi∣=∣xk∣}\mathcal{S} = \{i : |\mathbf{x}_i| = |\mathbf{x}_k|\}S={i:∣xi​∣=∣xk​∣},也即所有最大指标。

从而若 i∈Si\in\mathcal{S}i∈S 且 aij≠0a_{ij}\neq 0aij​=0,则可在前述推导中令 k→ik \rightarrow ik→i 即得 ∣xi∣=∣xj∣|\mathbf{x}_i| = |\mathbf{x}_j|∣xi​∣=∣xj​∣,也即 j∈Sj\in\mathcal{S}j∈S。

若 S\mathcal{S}S 不是全集,则 S\mathcal{S}S 与其补集 T\mathcal{T}T 满足 aij=0a_{ij}=0aij​=0 对所有 i∈S,j∈Ti\in\mathcal{S}, j\in\mathcal{T}i∈S,j∈T 成立,与不可约性矛盾!

若 S\mathcal{S}S 是全集,则所有行必须满足等号,与 ∣akk∣≥∑j≠k∣akj∣|a_{kk}| \ge \sum_{j\neq k}|a_{kj}|∣akk​∣≥∑j=k​∣akj​∣ 至少一个严格不等式矛盾!

不可约对角占优矩阵 Jacobi 迭代收敛性证明

反证法证明 ρ(MJ)<1\rho(\mathbf{M}_{J}) < 1ρ(MJ​)<1。反设 λ\lambdaλ 为 MJ\mathbf{M}_JMJ​ 的特征值 且 ∣λ∣≥1|\lambda| \geq 1∣λ∣≥1。则:

det⁡(λD+L+U)=0\det(\lambda\mathbf{D} + \mathbf{L} + \mathbf{U}) = 0det(λD+L+U)=0

令 C(λ)=λD+L+U\mathbf{C}(\lambda) = \lambda\mathbf{D} + \mathbf{L} + \mathbf{U}C(λ)=λD+L+U,其元素为:

cij={λaii,i=jaij,i≠jc_{ij} = \begin{cases} \lambda a_{ii}, & i=j \\ a_{ij}, & i\neq j \end{cases}cij​={λaii​,aij​,​i=ji=j​

容易发现 C(λ)\mathbf{C}(\lambda)C(λ) 仍是不可约对角占优矩阵。故其非奇异,与 det⁡(C(λ))=0\det(\mathbf{C}(\lambda))=0det(C(λ))=0 矛盾!

不可约对角占优矩阵 Gauss-Seidel 迭代收敛性证明

反证法证明 ρ(MGS)<1\rho(\mathbf{M}_{GS}) < 1ρ(MGS​)<1。反设 λ\lambdaλ 为 MGS\mathbf{M}_{GS}MGS​ 特征值且 ∣λ∣≥1|\lambda| \geq 1∣λ∣≥1。则:

det⁡(λ(D+L)+U)=0\det(\lambda(\mathbf{D}+\mathbf{L}) + \mathbf{U}) = 0det(λ(D+L)+U)=0

令 B(λ)=λD+λL+U\mathbf{B}(\lambda) = \lambda\mathbf{D} + \lambda\mathbf{L} + \mathbf{U}B(λ)=λD+λL+U。其元素为:

bij={λaii,i=jλaij,i>jaij,i<jb_{ij} = \begin{cases} \lambda a_{ii}, & i=j\\ \lambda a_{ij}, & i>j\\ a_{ij}, & i<j \end{cases}bij​=⎩⎨⎧​λaii​,λaij​,aij​,​i=ji>ji<j​

容易发现 B(λ)\mathbf{B(\lambda)}B(λ) 仍是不可约对角占优矩阵。故其非奇异,与 det⁡(B(λ))=0\det(\mathbf{B(\lambda)})=0det(B(λ))=0 矛盾!


方法对比与总结

特性JacobiGauss-SeidelSOR
更新方式同步(并行友好)异步(串行)异步(串行)
存储需求需存储两个向量可原位存储可原位存储
收敛速度慢中等可调(可能最快)
适用场景并行计算通用已知近似最优 ω\omegaω
目录
  • 简介
  • Jacobi 迭代法
    • Jacobi 迭代格式
    • Jacobi 算法流程
  • Gauss-Seidel 迭代法
    • Gauss-Seidel 迭代格式
    • Gauss-Seidel 算法流程
  • 松弛法
    • SOR 迭代格式
    • SOR 算法流程
  • 迭代法的收敛性
    • 统一迭代格式
    • 两个引理
    • 收敛的充要条件
    • 收敛的充分条件
    • 收敛速率分析
    • 终止条件估计
  • 特殊矩阵的收敛性
    • 相关定义
    • 严格对角占优矩阵的收敛性
      • 严格对角占优矩阵非奇异性证明
      • 严格对角占优矩阵 Jacobi 迭代收敛性证明
      • 严格对角占优矩阵 Gauss-Seidel 迭代收敛性证明
    • 不可约对角占优矩阵的收敛性
      • 不可约对角占优矩阵非奇异性证明
      • 不可约对角占优矩阵 Jacobi 迭代收敛性证明
      • 不可约对角占优矩阵 Gauss-Seidel 迭代收敛性证明
  • 方法对比与总结
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo