逐次超松弛 (Successive Over-Relaxation)

基本原理

考虑一个线性方程组 Ax = b,其中 A 是一个 n x n 的矩阵,x 是一个 n 维的向量,b 是一个 n 维的向量。SOR 方法通过将矩阵 A 分解为下三角矩阵 L、对角矩阵 D 和上三角矩阵 U,即 A = L + D + U。然后,根据高斯-赛德尔方法的思想,可以写出迭代公式:

x(k+1) = (D + ωL)-1[(1 – ω)D – ωU]x(k) + ω(D + ωL)-1b

其中 x(k) 是第 k 次迭代的解向量,ω 是松弛因子。当 ω = 1 时,SOR 方法退化为高斯-赛德尔方法。ω 的选择对收敛速度至关重要。0 < ω < 2 是 SOR 方法收敛的必要条件。

算法步骤

SOR 方法的迭代步骤如下:

  1. 初始化:选择一个初始解向量 x(0) 和松弛因子 ω
  2. 迭代:对于每一次迭代 k (从 0 开始):
    • i = 1, 2, …, n:
    • 计算中间值:
    • σi = Σj=1i-1 aijxj(k+1) + Σj=i+1n aijxj(k)
    • 更新解向量的第 i 个元素:
    • xi(k+1) = (1 – ω)xi(k) + (ω/aii)(bi – σi)
  3. 判断收敛:检查 x(k+1)x(k) 的差异是否小于某个预设的阈值。如果满足,则停止迭代;否则,返回步骤 2。

松弛因子的选择

松弛因子 ω 的选择对 SOR 方法的收敛速度至关重要。理论上,存在一个最优的 ω 值,使得 SOR 方法的收敛速度最快。然而,确定最优 ω 通常需要一些计算和先验知识,例如矩阵的性质。在实践中,可以通过实验或经验来选择合适的 ω 值。如果 ω 太小,SOR 方法的收敛速度会接近高斯-赛德尔方法;如果 ω 太大,SOR 方法可能发散。一般而言,ω 的取值范围在 1 到 2 之间。

应用场景

SOR 方法广泛应用于各种科学和工程领域,包括:

  • 求解偏微分方程,例如使用有限差分或有限元方法离散化后的线性方程组。
  • 图像处理,例如图像去噪和恢复。
  • 经济学,例如求解经济模型中的均衡问题。
  • 计算机图形学,例如求解光线追踪中的线性方程组。

优点和局限性

优点:

  • 相对于高斯-赛德尔方法,通常收敛速度更快,尤其在大型稀疏矩阵的求解中。
  • 相对简单,易于实现。

局限性:

  • 选择合适的松弛因子可能比较困难,需要一定的经验或计算。
  • 对于非对称矩阵,SOR 方法的收敛性质不如对称正定矩阵。

结论

逐次超松弛 (SOR) 方法是一种有效的迭代方法,用于求解线性代数方程组。通过引入松弛因子,它能够显著提高高斯-赛德尔方法的收敛速度。虽然松弛因子的选择需要一定的技巧,但在许多实际应用中,SOR 方法是一种非常有用的数值求解工具。

参考资料