您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 数值分析实验报告-Sor法分析
数值分析实验报告一、实验目的1、会使用Sor法求解一个线性方程组2、熟悉matlab语言并结合原理编程求方程组3、改变的值观察实验结果4、会分析实验结果二、实验题目编制Sor迭代格式程序进行求解一个线性方程组的迭代计算情况,运行中要选用不同的松弛因子进行尝试三、实验原理Jacobi迭代和seidel迭代对具体的线性方程组来说,逼近*x的速度是固定不变的,遇到收敛很慢的情况时就显得很不实用。Sor法是一seidel迭代为基础,并在迭代中引入参数以增加迭代选择的灵活性,具体为:用seidel迭代算出的,)()1()()1(kkJkkJxxxxx相减得到差向量与再用参数乘之再加上)1()()()1()1()()()1(kJkkkkkkxxxxxxxx,即的下一步迭代作为,由seidel迭代的公式可以得到Sor法的迭代格式为nixaxabaxxkjnijijkjijijiiikiki,2,1),()1()(1)1(11)()1(式中称为松弛因子。四、实验内容用matlab编程得到Sor法求线性方程组的算法为:function[x,n]=SOR(A,b,x0,w,eps,M)ifnargin==4eps=1.0e-4;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的上三角阵B=inv(D-L*w)*((1-w)*D+w*U);f=w*inv((D-L*w))*b;x=B*x0+f;n=1;%迭代次数whilenorm(x-x0)=epsx0=x;x=B*x0+f;n=n+1;if(n=M)disp('Warning:迭代次数太多,可能不收敛!');return;endend输入数据:A=[201-3-1;31807;-1240-2;10-15];b=[1;2;10;-1];x0=[0;0;0;0];w=1;eps=1e-4;M=100;[x,n]=SOR(A,b,x0,w,eps,M)x=0.06870.16450.2352-0.1667n=5error;A=[201-3-1;31807;-1240-2;10-15];b=[1;2;10;-1];x0=[0;0;0;0];w=1.5;eps=1e-4;M=100;[x,n]=SOR(A,b,x0,w,eps,M)x=0.06870.16450.2352-0.1667n=21A=[201-3-1;31807;-1240-2;10-15];b=[1;2;10;-1];x0=[0;0;0;0];w=2.5;eps=1e-4;M=100;[x,n]=SOR(A,b,x0,w,eps,M)???Errorusing==errorNotenoughinputarguments.Errorin==SORat13用实验3中的线性方程组作为例子比较得当=1.5时,x=0.06870.16450.2352-0.1667迭代次数为n=21当=1时,x=0.06870.16450.2352-0.1667迭代次数为n=5当=2.5时,出现error五、实验分析由定理,Sor法收敛的必要条件是02,因此,当=1.5和1时,算法收敛,能够求出根,并且迭代次数根据的不同而不同,在求方程组的根时,只要选择恰当的,收敛是很快的。而当2时,算法不收敛,因此程序出现错误,不能求出根。当=1时,根据Sor法的构造方法知,此时的Sor法就是seidel法
本文标题:数值分析实验报告-Sor法分析
链接地址:https://www.777doc.com/doc-7125003 .html