←
PDF 399 / 1160 Figure 5.15 Iterative solution of (5.28) using Gauss–Seidel iteration.
→
English · PDF 399
Original PDF page 399
中文 · PDF 399
迭代 0 1 2 3 4 5 6 7 8 9 10
x 0 0.5 0.375 0.4375 0.6172 0.7480 0.8350 0.8920 0.9293 0.9537 0.9697
y 0 0.25 0.125 0.2344 0.4961 0.6699 0.7839 0.8586 0.9074 0.9394 0.9603
z 0 0.375 1.0312 1.3750 1.5918 1.7329 1.8252 1.8856 1.9251 1.9510 1.9679
t 0 -1.1875 -1.5156 -1.6875 -1.7959 -1.8665 -1.9126 -1.9426 -1.9626 -1.9755 -1.9840

图 5.15 使用高斯–赛德尔迭代法对 (5.28) 的迭代求解。

并使用相同的起始点 $x = 0$ , $y = 0$ 被使用。迭代过程略有不同:

将值 0, 0 代入第一个方程 $$\Rightarrow x = \frac{1}{2}$$

将值 $$\frac{1}{2}$$ , 0 代入第二个方程 $\implies y = -\frac{18}{18}$

将值 $$\frac{1}{2}$$ , $-\frac{15}{8}$ 代入第一个方程 $\implies x = \frac{31}{32}$ 。

将值 $$\frac{31}{32}$$ , $-\frac{15}{8}$ 代入第二个方程 $\Rightarrow y = -\frac{255}{128}$

将值 $$\frac{31}{32}$$ , $-\frac{2555}{128}$ 在第一个方程中 $\Rightarrow x = \frac{511}{512}$

并以同样的方式继续。可以看出,收敛速度已经快了很多。

在第二个例子中,我们一旦计算出 x、y、z 和 t 的新值就立即使用它们:这种方法称为 Gauss–Seidel 迭代。这可以写成

$$x^{(r+1)} = \frac{1}{2} (1 - y^{(r)})$$

$$y^{(r+1)} = \frac{1}{2} (1 - x^{(r+1)} - z^{(r)})$$

$$z^{(r+1)} = \frac{1}{2} (1 - y^{(r+1)} - t^{(r)})$$

$$t^{(r+1)} = \frac{1}{2} (-2 - z^{(r+1)})$$

现在的计算得到了如图 5.15 所示的结果。我们看到,在所引用的十次迭代之后,用 Gauss–Seidel 迭代得到的解与实际解的误差在 4% 以内,而用 Jacobi 迭代得到的解仍有约 20% 的误差。Gauss–Seidel 方法不仅更快,而且更便于在计算机上实现。在二十次迭代之内,Gauss–Seidel 解即可精确到小数点后三位。

尽管这两种迭代方法是通过一个特定例子来描述的,但该方法是相当通用的。为求解

AX = b

我们将

A = D + L + U

重写,其中 D 是对角矩阵,L 仅在对角线下方有非零元素,U 仅在对角线上方有非零元素,于是