资源描述:
《数值分析实验报告-Sor法分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值分析实验报告一、实验目的1、会使用Sor法求解一个线性方程组2、熟悉matlab语言并结合原理编程求方程组3、改变的值观察实验结果4、会分析实验结果二、实验题目编制Sor迭代格式程序进行求解一个线性方程组的迭代计算情况,运行中要选用不同的松弛因子进行尝试三、实验原理Jacobi迭代和seidel迭代对具体的线性方程组来说,逼近的速度是固定不变的,遇到收敛很慢的情况时就显得很不实用。Sor法是一seidel迭代为基础,并在迭代中引入参数以增加迭代选择的灵活性,具体为:用seidel迭代算出的再用参数乘之再加上,由seidel迭代的公式可以得到Sor法的迭代格式
2、为式中称为松弛因子。四、实验内容用matlab编程得到Sor法求线性方程组的算法为:function[x,n]=SOR(A,b,x0,w,eps,M)ifnargin==4eps=1.0e-4;M=200;elseifnargin<4errorreturnelseifnargin==5M=200;endif(w<=0
3、
4、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(
5、(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;318
6、07;-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=21>>A=[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==>
7、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法收敛的必要条件是0<<2,因此,当=1.5和1时,算法收敛,能够求出根,并且迭代次数根据的不同而不同,在求方程组的根时,只要选择恰当的,收敛是很快的。而当>2时,算法不收敛,因此程序出现错误,不能求出根。当=1时,根据Sor法的构造方法知,此时的Sor法就是seidel法