Jacobi迭代法与Gauss-Seidel迭代法

之前我在博客里介绍过牛顿-拉弗逊迭代法,对数据挖掘技术熟悉的同学应该还知道有梯度下降法(其实也是一种迭代算法)。今天刚好有朋友和我讨论泊松图像融合算法,我说我过去文章里给出的是最原始、最直观的实现算法。对于理解泊松融合的原理比较有帮助,但是效率可能并不理想。印象中,泊松融合是有一个以矩阵为基础的快速算法的。但是过去我浅尝辄止了,也没深究,今天刚好再提到,小看了一下,似乎涉及高斯-塞德尔迭代法。好吧,博主君暂且把知道的这部分内容做个介绍吧。特别说明:以下内容主要取材自《数值方法(MATLAB版)(第四版)》马修斯等著,电子工业出版社2010年出版发行。


一、雅各比迭代法


考虑如下方程组:

4xy+z=74x8y+z=212x+y+5z=15

上述方程可表示成如下形式:
x=7+yz4y=21+4x+z8z=15+2xy5

这样就提出了下列雅可比迭代过程:

xk+1yk+1zk+1=7+yk+zk4=21+4xk+zk8=15+2xkyk5(3)

如果从 P0=(x0,y0,z0)=(1,2,2) 开始,则上式中的迭代将收敛到解 (2,4,3)

x0=1,y0=2 z0=2 代入上式中每个方程的右边,即可得到如下新值:

x1=7+224=1.75y1=21+4+28=3.375z1=15+225=3.00

新的点 P1=(1.75,3.375,3.00) P1 更接近 (2,4,3) 。使用迭代过程(3)生成点的序列{ P0 }将收敛到解 (2,4,3)

Jacobi迭代法与Gauss-Seidel迭代法_第1张图片

这个过程称为雅可比迭代,可用来求解某些类型的线性方程组。从上表中可以看出,经过19步选代,选代过程收敛到一个精度为9 位有效数字的近似值(2.00000000, 4.00000000, 3.00000000)。但有时雅可比迭代法是无效的。通过下面的例子可以看出,重新排列初始线性方程组后,应用雅可比迭代法可能会产生一个发散的点的序列。

设重新排列的线性方程组如下:

2x+y+5z=154x8y+z=214xy+z=7

这些方程可以表示为如下形式:

x=15+y5z2y=21+4x+z8z=74x+y5

这可以用如下雅可比迭代过程求解:

xk+1yk+1zk+1=15+yk+5zk2=21+4xk+zk8=74xk+yk

如果从 P0=(x0,y0,z0)=(1,2,2) 开始,则上式中的迭代将对解 (2,4,3) 发散。将 x0=1 y0=2 z0=2 带入上式中每个方程的右边,即可得到新值 x1 y1 z1

x1=15+2+102=1.5y1=21+4+28=3.375z1=74+2=5.00

新的点 P1=(1.5,3.375,5.00) P0 更远地偏离 (2,4,3) 。使用上述迭代过程生成点的序列是发散的。

Jacobi迭代法与Gauss-Seidel迭代法_第2张图片


二、高斯-塞德尔迭代法


有时候通过其他方面可以加快迭代的收敛速度。观察由雅可比迭代过程(3)产生的三个序列{ xk },{ yk }和{ zk },它们分别收敛到2,4和3。由于 xk+1 被认为是比 xk 更好的 x 之近似值,所以在计算 yk+1 时用 xk+1 来替换 xk 是合理的。同理,可用 xk+1 yk+1 计算 zk+1 。下面的例子演示了对上述例子中给出的方程组使用上述方法的情况。

设给定上述线性方程组并利用高斯-塞德尔(Gauss-Seidel)迭代过程求解:

xk+1=7+ykzk4yk+1=21+4xk+1+zk8zk+1=15+2xk+1yk+15

如果从 P0=(x0,y0,z0)=(1,2,2) 开始,用上式中的迭代可收敛到解 (2,4,3)
y0=2 z0=2 代入上式第一个方程可得

x1=7+224=1.75

x1=1.75 z0=2 代入第二个方程可得

y1=21+4×1.75+28=3.75

x1=1.75 y1=3.75 代入第三个方程可得

z1=15+2×1.753.755=2.95

新的点 P1=(1.75,3.75,2.95) P0 更接近解 (2,4,3) ,而且比之前例子中的值更好。用迭
代(7)生成序列{ Pk 收敛到 (2,4,3)

Jacobi迭代法与Gauss-Seidel迭代法_第3张图片

正如前面讨论的,应用雅各比迭代法计算有时可能是发散的。所以有必要建立一些判定条件来判断雅可比迭代是否收敛。在给出这个条件之前,先来看看严格对角占优矩阵的定义。
设有 N × N 维矩阵 A ,如果

这里写图片描述
其中, i 是行号, j 是列号,则称该矩阵是严格对角占优矩阵。显然,严格对角占优的意思就是指对角线上元素的绝对值不小于所在行其他元素的绝对值和。

a11x1+a12x2+...+a1jxj+...+a1NxNa21x1+a22x2+...+a2jxj+...+a2NxN......aj1x1+aj2x2+...+ajjxj+...+ajNxN......aN1x1+aN2x2+...+aNjxj+...+aNNxN=b1=b2=bj=bN

设第k点为 Pk=(x(k)1,x(k)2,...,x(k)j,...,x(k)N,) ,则下一点为 Pk+1=(x(k+1)1,x(k+1)2,...,x(k+1)j,...,x(k+1)N,) 。向量 Pk 的上标 (k) 可用来标识属于这一点的坐标。迭代公式根据前面的值 (x(k)1,x(k)2,...,x(k)j,...,x(k)N,) ,使用上述线性方程组中第 j 行求解 x(k+1)j

雅可比迭代:

x(k+1)j=bjaj1x(k)1...ajj1x(k)j1ajj+1x(k)j+1...ajNx(k)Najj

其中 j=1,2,...,N
雅可比迭代使用所有旧坐标来生成所有新坐标,而高斯-塞德尔迭代尽可能使用新坐标得到更新的坐标。

高斯-塞德尔迭代:

x(k+1)j=bjaj1x(k+1)1...ajj1x(k+1)j1ajj+1x(k)j+1...ajNx(k)Najj

其中 j=1,2,...,N

下面的定理给出了雅可比迭代收敛的充分条件。
(雅可比选代) 设矩阵 A 具有严格对角优势,则 AX=B 有惟一解 X=P 。利用前面给出的迭代式可产生一个向量序列{ Pk },而且对于任意初始向量 P0 ,向量序列都将收敛到 P

当矩阵 A 具有严格对角优势时,可证明高斯-塞德尔迭代法也会收敛。在大多数情况下,高斯-塞德尔迭代法比雅可比迭代法收敛得更快,因此通常会利用高斯-塞德尔迭代法。但在某些情况下,雅可比迭代会收敛,而高斯-塞德尔迭代不会收敛。

你可能感兴趣的:(算法,数学,雅各比迭代,高斯迭代法)