MATLAB编制SOR算法求解AX=b

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

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

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

资源描述

MATLAB编制SOR算法求解AX=b实例1.题目:用SOR方法求解方程组(分别取松弛因子w=1.03;w=1;w=1.1)。1212323414443xxxxxxx其中精确解*11,1,22x要求当*55*10kxx迭代终止,并且对每个w确定迭代次数。2.SOR方法SOR原理参考李庆扬主编《数值分析》第五版6.3节超松弛迭代法。MATLAB编程如下:首先编制SOR调用的功能函数。%SOR函数%输入变量:x0为初始值,x1为精确值,w为松弛因子,eps为精度,M为最大迭代次数%输出变量:x2为迭代值,n为满足精度要求的最小迭代次数function[x2,n]=SOR(A,b,x0,x1,w,eps,M)D=diag(diag(A));%求A的对角矩阵L=-tril(A,-1);%求A的下三角阵U=-triu(A,1);%求A的上三角阵B=inv(D-L*w)*((1-w)*D+w*U);f=w*inv((D-L*w))*b;x2=B*x0+f;%进行第一次迭代n=1;whilenorm(x1-x2)=eps%迭代的精度控制x2=B*x2+f;n=n+1;if(n=M)disp('Warning:迭代次数太多,可能不收敛!');return;endend然后编制求解的主程序。clcclearallA=[4-10;-14-1;0-14];%输入方程A、b和精确解x1、迭代初值x0b=[1;4;-3];x1=[0.5;1;-0.5];x0=[0;0;0];eps=5e-5;%控制精度为5e-5w=1.03%w=1%分别计算w=1.03、w=1、w=1.1三种情况%w=1.1;M=200;%迭代次数超过200认为不收敛[x2,n]=SOR(A,b,x0,x1,w,eps,M);vpa(x2,8)%对迭代值x2保留8位小数3.求解结果松弛因子W满足误差*55*10kxx的迭代次数满足误差*55*10kxx的迭代结果1.035(0.50000447,1.0000016,-0.49999974)T1.05(0.50003052,1.0000153,-0.49999619)T1.15(0.50000391,1.0000146,-0.50000362)T

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

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

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

×
保存成功