1、第6章 解线性方程组的迭代法,直接法得到的解是理论上准确的,但是我们可以看得出,它们的计算量都是n3数量级,存储量为n2量级,这在n比较小的时候还比较合适(n400),但是对于现在的很多实际问题,往往要我们求解很大的n的矩阵,而且这些矩阵往往是系数矩阵就是这些矩阵含有大量的0元素。对于这类的矩阵,在用直接法时就会耗费大量的时间和存储单元。因此我们有必要引入一类新的方法:迭代法。迭代法具有的特点是速度快。与非线性方程的迭代方法一样,需要我们构造一个等价的方程,从而构造一个收敛序列,序列的极限值就是方程组的根,对方程组,做等价变换,如:令,,则,则,我们可以构造序列,若,同时:,所以,序列收敛,与
2、初值的选取无关,定义6.1:(收敛矩阵),6.1 Jacobi迭代,格式很简单:,Jacobi迭代算法,1、输入系数矩阵A和向量b,和误差控制eps 2、x1=0,0,0 , x2=1,1,1 /赋初值 3、while( |A*x2-b|eps) x1=x2;for(i=0;in;i+) x2i=0;for(j=0;ji;j+) x2i += Aij*x1jfor(j=i+1;jn;j+) x2i += Aij*x1jx2i=-(x2i-bi)/Aii 4、输出解x2,迭代矩阵,记,易知,Jacobi迭代有,收敛条件,迭代格式收敛的充要条件是G的谱半径1。对于Jacobi迭代,我们有一些保证收
3、敛 的充分条件,定理:若A满足下列条件之一,则Jacobi迭代收敛。, A为行对角占优阵, A为列对角占优阵, A满足,证明:, A为列对角占优阵,则AT为行对角占优阵,有,证毕,6.2 GaussSeidel迭代,在Jacobi迭代中,使用最新计算出的分量值,Gauss-Siedel迭代算法,1、输入系数矩阵A和向量b,和误差控制eps 2、x2=1,1,1 /赋初值 3、while( |A*x2-b|eps) for(i=0;in;i+) for(j=0;ji;j+) x2i += Aij*x2jfor(j=i+1;jn;j+) x2i += Aij*x2jx2i=-(x2i-bi)/Ai
4、i 4、输出解x2,迭代矩阵,是否是原来的方程的解?,A=(D-L)-U,收敛条件,迭代格式收敛的充要条件是G的谱半径1。我们看一些充分条件,定理:若A满足下列条件之一,则Jacobi迭代收敛。, A为行或列对角占优阵, A对称正定阵,证明:,设G的特征多项式为,,则,为对角占优阵,则,时,为对角占优阵,即,即,证毕,注:二种方法都存在收敛性问题。有例子表明:Gauss-Seidel法收敛时,Jacobi法可能不收敛;而Jacobi法收敛时, Gauss-Seidel法也可能不收敛。,1、预处理,2、格式,3、结果,1、Jacobi迭代,特征值为,2、GaussSiedel迭代,6.3 松弛迭
5、代,记,则,可以看作在前一步上加一个修正量。若在修正量前乘以一个因子,,有,对GaussSeidel迭代格式,写成分量形式,有,松弛迭代算法,1、输入系数矩阵A、向量b和松弛因子omega,和误差控制eps 2、x2=1,1,1 /赋初值 3、while( |A*x2-b|eps) for(i=0;in;i+) temp-0for(j=0;ji;j+) temp += Aij*x2jfor(j=i+1;jn;j+) temp += Aij*x2jtemp = -(x2i-bi)/Aiix2i = (1-omega)*x2i+omega*temp 4、输出解x2,迭代矩阵,定理:,松弛迭代收敛,
6、定理:,A对称正定,则松弛迭代收敛,是否是原来的方程的解?,SOR方法收敛的快慢与松弛因子的选择有密切关系.但是如何选取最佳松弛因子,即选取=*,使()达到最小,是一个尚未很好解决的问题.实际上可采用试算的方法来确定较好的松弛因子.经验上可取1.41.6.,定理 若SOR方法收敛, 则02.,证 设SOR方法收敛, 则()1,所以|det()| =|12 n|1,而det() =det(D-L)-1 (1-)D+U),=det(E-D-1L)-1 det(1-)E+D-1U),=(1-)n,于是|1-|1, 或 02,定理 设A是对称正定矩阵, 则解方程组Ax=b的SOR方法,当02时收敛.,
7、证 设是的任一特征值, y是对应的特征向量, 则,(1-)D+Uy= (D-L)y,于是(1-)(Dy,y)+(Uy,y)=(Dy,y)-(Ly,y),由于A=D-L-U是对称正定的, 所以D是正定矩阵, 且L=UT. 若记(Ly,y)=+i, 则有,(Dy,y)=0,(Uy,y)=(y,Ly)=(Ly,y),=-i,0(Ay,y)=(Dy,y)-(Ly,y)-(Uy,y) =-2,所以,当02时,有,(-+)2-(-)2= (2-)(2-)= (2-)(2-)0,所以|21, 因此()1,即S0R方法收敛.,可得 =2/,设是B的任一特征值, y是对应的特征向量, 则,(L+U)y=Dy,于是(Ly,y)+(Uy,y)=(Dy,y),当A对称正定时,即2-0,而 (2D-A)y,y)=(Dy,y)+(Ly,y)+(Uy,y) =+2,即,当A对称正定时,Jacobi迭代法收敛2D-A正定.,