资源描述:
《常微分方程的解线性方程组的迭代法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验五解线性方程组的迭代法【实验内容】对1、设线性方程组2、设对称正定系数阵线性方程组3、三对角形线性方程组试分别选用Jacobi迭代法,Gauss-Seidol迭代法和SOR方法计算其解。【实验方法或步骤】1、体会迭代法求解线性方程组,并能与消去法加以比较;2、分别对不同精度要求,如由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。程序:用雅可比方法求的程序:function[x,n]=jacob
2、i(A,b,x0,eps,varargin)ifnargin==3eps=1.0e-6;M=200;elseifnargin==5M=varargin{1};endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=D(L+U);f=Db;x=B*x0+f;n=1;whilenorm(x-x0)>=epsx0=x;x=B*x0+f;n=n+1;if(n>=M)diso('不收敛!')return;endend解1的程序为A=[42-3-1210000;86-5-3650100;42-2-132-1031;0-215-13-11
3、94;-426-167-3323;86-8571726-35;02-13-425301;1610-11-917342-122;462-713920124;00-18-3-24-863-1;],b=[51232346133819-21]'A=Columns1through442-3-186-5-342-2-10-215-426-186-8502-131610-11-9462-700-18Columns5through82100650132-10-13-1167-3371726-425317342-113920-3-24-86Columns9through10000031
4、9423-3501221243-1b=51232346133819-21>>x0=ones(10,1);>>[x,n]=Jacobi(A,b,x0)得到的结果为Warning:FunctioncallJacobiinvokesinexactmatchd:MATLAB7workjacobi.m.不收敛!x=1.0e+124*-0.1794-0.3275-0.70941.59901.03110.32910.24644.39050.4927-2.6574n=200即迭代了200次而且可能不收敛A=42-40420022-121320-4-1141-8-3560-216
5、-1-4-3321-8-1224-10-343-3-44111-4025-3-1011420063-3-4219b=0-620239-22-1545>>x0=ones(8,1);>>[x,n]=Jacobi(A,b,x0)不收敛!x=1.0e+047*0.96271.0084-0.4954-0.59790.30970.6872-0.0666-0.2629n=200此方程可能不收敛A=[4-100000000;-14-10000000;0-14-1000000;00-14-100000;000-14-10000;0000-14-1000;00000-14-100;000
6、000-14-10;0000000-14-1;00000000-14;],b=[75-1326-1214-45-5]'A=Columns1through54-1000-14-1000-14-1000-14-1000-140000-100000000000000000000Columns6through1000000000000000000000-100004-1000-14-1000-14-1000-14-1000-14b=75-1326-1214-45-5>>x0=ones(10,1);>>[x,n]=Jacobi(A,b,x0)x=2.00001.0000-3.0
7、0000.00001.0000-2.00003.00000.00001.0000-1.0000n=22得到结果为迭代了22次得到近似解为x=2.00001.0000-3.00000.00001.0000-2.00003.00000.00001.0000-1.0000用高斯赛德尔源程序function[x,n]=gauseidel(A,b,x0,eps,M)ifnargin==3eps=1.0e-6;M=200;elseifnargin==4M=200;elseifnargin<3errorreturn;endD=diag(diag(A));L=-tr