数值分析第二次大作业SOR最优松弛因子选取方法及SOR迭代法的改进

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《数值分析》第二次大作业题目:SOR最优松弛因子选取方法及SOR迭代法的改进内容:1.SOR最优松弛因子选取方法2.SOR迭代法的改进(SSOR迭代法)3.SSOR迭代法的Matlab程序4.举例比较jacobi,Gauss-Seidel,SOR及SSOR1111111迭代法的收敛速度姓名:合肥工业大学学号:2011班级:信息与计算科学11-1班参考资料:1.《确定SOR最优松弛因子的一个实用算法》李春光等《计算力学学报》2.《数值分析与实验》,薛毅,北京工业大学出版社.3.《数值分析中的迭代法解线性方程组》,马云,科学出版社4.《非线性互补问题的改进超松弛迭代算法》,段班祥等,江西师范大学出版社5.《迭代法解线性方程组的收敛性比较》,郑亚敏,江西科学出版社.一、SOR最优松弛因子选取方法SOR迭代法迭代公式:111)()1()()1()1(ijnijkjijkjijiiikikixaxabaxxni,...,2,11.二分比较法将松弛因子的区间(1,2)进行二分,每个小区间的长度为1/2,去中间值3/2,按照SOR迭代法迭代公式,求出跌代次数k,如果k不超过指定的发散常数,则可确定的值;否则将(1,2)四等分,每个区间长度为1/4,取各分点值,继续迭代,一般地,将区间(1,2)二分M次,每次二分步长为M21,一次取取各分点值,按照SOR迭代法迭代公式,求出跌代次数k,如果k不超过指定的发散常数,则可确定的值,这样总能找到一个不超过指定发散常数的值。2.逐步搜索法将的取值区间(1,2)进行M等分,分别取MMMM11,...,21,11,通过迭代公式依次对同意精度要求求出迭代次数k的值,并从中选出最优松弛因子的值。3.黄金分割法依据黄金分割比的思想,通过计算机主动选取最优松弛因子的近似值,步骤如下a.对(1,2)区间进行第一次0.618的分割,区间边界2,111ba,在区间11,ba分割出黄金点1111618.0abap,进行SOR迭代法的迭代,求出迭代次数k的值,如果没有超过规定的发散常数,迭代结束,否则做步骤b。b.在(1,1.618)和区间(1.618,2)之间进行第二次黄金分割,找出2222618.0abap,其中22ba和是新分割区间的左右边界,找出迭代次数最少的,若发散则改变区间继续进行黄金分割。二、SOR迭代法的改进(SSOR迭代法)SOR迭代法的计算公式为:(0)(0)(0)1(1)(1)()()(1)()(0)211111(,,,)1()()nkkkkiikkTiniijjijjijjiiiiniiijjijjjjiiixxxxxbaxaxxxaxbaxaxa,(0,1,;1,2,)kin则存在(1)()(1)()()()kkkkkDxDxbLxUxDx令1()((1))SBDLDU,1()SfDLb则(1)()kkSSBf对称超松弛迭代法是对逐次超松弛迭代法的改进,在逐次超松弛迭代法的基础上,首先对线性方程组按照顺序方式依次求解,(1,2,)ixin,然后在此基础上对线性方程组逆序求解,得出SSOR迭代法。求解步骤:Step1顺序求解得出12()kx:12()()1111()((1))()kkxLxfLDLDUfDLbStep2逆序求解由12()kx得出(1)kx12()(1)2112()((1))()kkxUxfUDUDLfDUb得出SSOR公式:(1)()11111(2)()()kkxSxfSULfDDUDDLDb三、SSOR迭代法Matlab程序:function[x,n]=SSOR(A,b,x0,w,eps,M)%对称逐次超松弛迭代法求线性方程组Ax=b的解ifnargin==4eps=1.0e-6;M=200;elseifnargin4errorreturnelseifnargin==5M=200;endif(w=0||w=2)error;return;endD=diag(diag(A));%求A的对角矩阵L=-tril(A,-1);%求A的下三角阵U=-triu(A,1);%求A的上三角阵B1=inv(D-L*w)*((1-w)*D+w*U);B2=inv(D-U*w)*((1-w)*D+w*L);f1=w*inv((D-L*w))*b;f2=w*inv((D-U*w))*b;x12=B1*x0+f1;x=B2*x12+f2;n=1;%迭代次数whilenorm(x-x0)=epsx0=x;x12=B1*x0+f1;x=B2*x12+f2;n=n+1;if(n=M)disp('Warning:迭代次数太多,可能不收敛!');return;endend四、几种迭代方法的比较下面我们用不同的迭代方法求解n元线性方程组Axb,其中4131412,.1412143Ab方程的精确解为*1,1,,1Tx.取10n,初始向量(0)x为零向量.利用Matlab程序,下表给出了几种迭代方法达到不同精度时所需的迭代次数.表1不同的迭代法达到某一精度时所需迭代次数的比较迭代法参数值迭代次数精度Jacobi迭代法\216110Gauss-Seidel迭代法\13SOR迭代法1.215SSOR迭代法1.28Jacobi迭代法\278110Gauss-Seidel迭代法\17SOR迭代法1.217SSOR迭代法1.210由上表可以看到,若合理的选取参数值,解系数矩阵为三对角矩阵的线性方程组时,SSOR迭代法收敛速度最快.

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功