←
PDF 401 / 1160 great interest, and specialistist books on numerical analysis give details of how this can be co
→
English · PDF 401
Original PDF page 401
中文 · PDF 401

极大的兴趣,数值分析的专业书籍详细介绍了如何计算它(例如,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 i = 1:20

$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 i = 1:20

$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 i = 1:20

$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$ .