您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 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
本文标题:MATLAB编制SOR算法求解AX=b
链接地址:https://www.777doc.com/doc-2887792 .html