码迷,mamicode.com
首页 > 其他好文 > 详细

Jacobi迭代法与Gauss-Seidel迭代法

时间:2016-01-25 19:38:54      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:

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


一、雅各比迭代法


考虑如下方程组:

4x?y+z=74x?8y+z=?21?2x+y+5z=15

上述方程可表示成如下形式:
x=7+y?z4y=21+4x+z8z=15+2x?y5

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

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

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

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

x1=7+2?24=1.75y1=21+4+28=3.375z1=15+2?25=3.00

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

技术分享

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

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

?2x+y+5z=154x?8y+z=?214x?y+z=7

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

x=?15+y?5z2y=21+4x+z8z=7?4x+y5

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

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

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

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

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

技术分享


二、高斯-塞德尔迭代法


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

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

xk+1=7+yk?zk4yk+1=21+4xk+1+zk8zk+1=15+2xk+1?yk+15

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

x1=7+2?24=1.75

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

y1=21+4×1.75+28=3.75

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

z1=15+2×1.75?3.755=2.95

新的点P1=(1.75,3.75,2.95)P0更接近解(2,4,3),而且比之前例子中的值更好。用迭
代(7)生成序列{Pk收敛到(2,4,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=bj?aj1x(k)1?...?ajj?1x(k)j?1?ajj+1x(k)j+1?...?ajNx(k)Najj

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

高斯-塞德尔迭代:

x(k+1)j=bj?aj1x(k+1)1?...?ajj?1x(k+1)j?1?ajj+1x(k)j+1?...?ajNx(k)Najj

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

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

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

Jacobi迭代法与Gauss-Seidel迭代法

标签:

原文地址:http://blog.csdn.net/baimafujinji/article/details/50582462

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!