上一节讲到直接解法有误差积累和破坏矩阵稀疏性的问题。
实际中应用较广泛的是解法通常是迭代法。相比直接解法,迭代解法在高性能并行实现上拥有很大的优势。但是,在此之前先要确定迭代法能否在可以接受的步数之内收敛。
不严谨地说,迭代法收敛性的大致趋势是:对于常用的大多数迭代法,矩阵的条件数越小收敛越快。
常用的迭代终止条件有:
、
等,
的选取取决于对解的精度要求。
静态迭代法(stationary iterative methods)是指形如
的迭代法。因为
和
不随迭代步数而变化,所以叫静态迭代法。这里介绍三种静态迭代法:雅可比法(Jacobi method)、高斯-赛德尔法(Gauss-Seidel method)和松驰法(successive relaxation method)。
静态迭代法收敛的充分条件是,存在算子范数
,使得
;更直观的一个充分条件是,
的最大特征值的模小于
。
雅可比法
一个线性方程组的第
个方程是
假设除了
以外的所以未知数都已被解出,那么
即可推导出迭代法
若将矩阵
分解为三部分
,其中
为不包括对角线的下三角部分,
为对角线,
为不包括对角线的上三角部分;则雅可比法可写成矩阵形式
高斯-赛德尔法
在雅可比法中,新值是用旧值代入解出的,而我们通常认为新值比旧值更接近精确解。如果
到
是按顺序依次计算的,那么在计算
时可以用前面已经计算出来的
个新值,即
高斯-赛德尔法也可以写成矩阵形式
或
高斯-赛德尔法还有其反向形式,即先计算
到
,再计算
,迭代公式为
矩阵形式
雅可比法与高斯-赛德尔法的总结与比较
雅可比法和高斯-赛德尔法收敛的一个充分条件是系数矩阵
严格对角占优或不可约弱对角占优。
高斯-赛德尔法由于使用了新值,收敛性比雅可比法好。但是前面提到,
到
是按顺序依次计算的,这就使得高斯-赛德尔法的并行性有限,从而迭代一步的计算时间比雅可比法要长。
松驰法
高斯-赛德尔法迭代公式可写为
将这个变化量乘上松弛因子
,得到
即
松弛法中的
可以证明,其最大特征值的模
,所以应该选取
。在实际应用中通常取
时收敛较快,这个条件下的松弛法又称为超松驰法(successive over-relaxation method)。
静态迭代法的迭代式又可以写为
在这里雅克比法和高斯-赛德尔法分别取
其实在此基础上任选
都能构造一种静态迭代法,例如后面要提到的不完全LU分解等更精确的方法。不过在不完全LU分解法出现时,已经有收敛更快的克雷洛夫子空间法,静态迭代法因收敛性不足而逐渐被取代。这里为何还要讲静态迭代法呢?这些
的近似方法,在克雷洛夫子空间法中还会用到,这个之后会讲到。