SOR迭代是在Gauss-Seidel迭代方法基础之上的进一步改进。其特征是取xk+1和xk的一个适当的加权平均来加快Gauss-Seidel收敛。对于方程组
Gauss-Seidel迭代格式为
而SOR迭代则是:
显然,参数ω=1时就是Gauss-Seidel迭代。而参数ω>1时称为逐次超松弛(Successive Over-Relaxation,SOR)迭代,ω<1时称为逐次低松弛(Successive Under-Relaxation)迭代。
·数值算例
对于下列的稀疏方程组,其精确解是X=[1,1,...,1]。
1)当n=200时,分别用Jacobi,Gauss-Seidel以及SOR
(ω=1.5和ω=1.2),比较三种方法收敛所需的迭代步数。
2)当n=1000时,分别取ω=1.2,1.3,1.6时SOR收敛所需的迭代步数
合理选择参数ω决定了SOR比Gauss-Seidel更快收敛。如果参数选择不当,SOR反而比Gauss-Seidel更慢。参数ω=1时就是Gauss-Seidel迭代。而参数ω>1时称为逐次超松弛(Successive Over-Relaxation,SOR)迭代,ω<1时称为逐次低松弛(Successive Under-Relaxation)迭代。
SOR方法Fortran程序