极大的兴趣,数值分析的专业书籍详细介绍了如何计算它(例如,Applied Linear Algebra,Peter Olver 和 Cheri Shakiban(2005),Pearson)。通常最好的方法是启发式方法——通过实验 $w$ 来找到一个能给出最快收敛速度的值。对于‘一次性’问题,只要能收敛,这几乎不值得费心,但在许多科学和工程问题中,同一个计算可能要进行数百次,因此最优的 $w$ 值可以将计算时间减少一半或更多。对于当前问题,达到四位小数精度所需的迭代次数如图 5.17 所示。
可以证明,在该区域之外 $0 < w < 2$ 该方法会发散,而在其内部则可能收敛也可能不收敛。当 $w < 1$ 时称为欠松弛,而当 $w > 1$ 时称为过松弛。在简单的问题中, $w$ 在某个范围内 $1.2-1.8$ 通常给出最快的收敛速度,这通常是作为首次猜测需要探索的区域。在所研究的问题中,取值为 $w = 1.4$ 时收敛速度几乎最快,所需的迭代次数仅为高斯–赛德尔方法的三分之二左右。然而,在某些物理问题中,需要欠松弛以避免迭代之间变化过快。
使用迭代方法必须非常小心,某些方程的收敛可能特别困难。在审视方程组时,需要相当丰富的经验来判断是否可以期望收敛,而且往往——即使对有经验的数学家来说——答案也是‘试了才知道’。方程的重新排列会极大地影响迭代方法的收敛性。例如,在 $2 \times 2$ 的例子中,如果交换方程的顺序
| 雅可比 | 高斯-赛德尔 | SOR,其中 $w = 1.2$ |
|---|---|---|
| $X = [0.5; 0.5; 0.5; 0.5]; \text{ Xold} = X;$ $XX = X;$ for $X(1) = (1-\text{Xold}(2)) / 2;$ $X(2) = (1-\text{Xold}(1) - \text{Xold}(3)) / 2;$ $X(3) = (1-\text{Xold}(2) - \text{Xold}(4)) / 2;$ $X(4) = (-2-\text{Xold}(3)) / 2;$ $\text{Xold} = X; XX = [XX, X];$end |
$X = [0.5; 0.5; 0.5; 0.5];$ $\text{Xold} = X; \text{ XX} = X;$ for $X(1) = (1-\text{Xold}(2)) / 2;$ $X(2) = (1-X(1) - \text{Xold}(3)) / 2;$ $X(3) = (1-X(2) - \text{Xold}(4)) / 2;$ $X(4) = (-2-X(3)) / 2;$ $\text{Xold} = X; XX = [XX, X];$end |
$X = [0.5; 0.5; 0.5; 0.5]; \text{ Xold} = X;$ $XX = X; \text{ w} = 1.2;$ for $X(1) = (1-w) * \text{Xold}(1) + w * (1 - \text{Xold}(2)) / 2;$ $X(2) = (1-w) * \text{Xold}(2) + w * (1 - X(1) - \text{Xold}(3)) / 2;$ $X(3) = (1-w) * \text{Xold}(3) + w * (1 - X(2) - \text{Xold}(4)) / 2;$ $X(4) = (1-w) * \text{Xold}(4) + w * (1 - X(3) - \text{Xold}(5)) / 2;$ $X(5) = (1-w) * \text{Xold}(5) + w * (1 - X(4) - \text{Xold}(6)) / 2;$ $X(6) = (1-w) * \text{Xold}(6) + w * (1 - X(7) - \text{Xold}(7)) / 2;$ $X(7) = (1-w) * \text{Xold}(7) + w * (1 - X(8) - \text{Xold}(8)) / 2;$end |
| 迭代 20 次后 | 20 次迭代后 | 20 次迭代后 |
| 0.9883 | 0.9995 | 1.0000 |
| $X = -0.9682$ | $X = -0.9994$ | $X = -1.0000$ |
| 1.9811 | 1.9995 | 2.0000 |
| -1.9804 | -1.9998 | -2.0000 |
图 5.16 从初始点出发实现 (5.28) 的 Jacobi、Gauss–Seidel 和 SOR 迭代的算法 $X^T = [0.5, 0.5, 0.5, 0.5]$ .
| SOR 因子 w | 0.0 | 0.4 | 0.6 | 1.0 | 1.4 | 1.8 | 2.0 | |
|---|---|---|---|---|---|---|---|---|
| 收敛所需迭代次数 | >50 | >50 | 47 | 34 | 26 | 21 | 17 | 29 |
图 5.17 收敛速率随 SOR 因子的变化 $w$ .