资源描述:
《线性方程组的几种迭代法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、线性方程组的几种迭代法专业班级:信计061姓名:袁金龙学号:15206012一实验目的1.熟悉Matlab编程。2.学习线性方程组迭代解法的程序设计算法。二实验题目研究解线性方程组Ax=b迭代法收敛速度。三实验原理与理论基础(一)雅克比(Jacobi)迭代法算法设计:①输入矩阵a与右端向量b及初值x(1,i);②按公式计算得(二)高斯――赛得尔迭代法算法设计:1.输入矩阵a与右端向量b及初值x(1,i).2.(i=1,2,…,n)(三)超松驰法算法设计:①输入矩阵a与右端向量b及初值x(1,i)。②,四实验内容(一)问题重述:研究解线性方程组Ax=b迭
2、代法收敛速度。要求:(1)选取不同的初始向量x0及右端向量b,给定迭代误差要求,用雅可比迭代和高斯-赛德尔迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。(2)用SOR迭代法求解上述方程组,松弛系数ω取1<ω<2的不同值,在时停止迭代.记录迭代次数,分析计算结果并得出你的结论。A为20阶五对角距阵(二)实验代码:①*************雅克比(Jacobi)迭代法****************function[]=yakebi(e)%输入矩阵a与右端向量b。fori=1:20a(i,i)=3;endfori=
3、3:20forj=i-2a(i,j)=-1/4;a(j,i)=-1/4;endendfori=2:20forj=i-1a(i,j)=-1/2;a(j,i)=-1/2;endendb=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];k=1;n=length(a);fori=1:nx(1,i)=1;%数组中没有第0行。endwhilek>=1fori=1:nm=0;%此步也可以用ifj~=i条件判定一下。forj=1:(i-1)m=m+a(i,j)*x(k,j);endforj=
4、(i+1):nm=m+a(i,j)*x(k,j);endx(k+1,i)=(b(i)-m)/a(i,i);endl=0;%判定满足条件使循环停止迭代。fori=1:nl=l+abs(x(k+1,i)-x(k,i));endifl5、dendfori=2:20forj=i-1a(i,j)=-1/2;a(j,i)=-1/2;endendb=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];k=1;n=length(a);fori=1:nx(1,i)=0;%数组中没有第0行。endwhilek>=1fori=1:np=0;q=0;forj=1:(i-1)p=p+a(i,j)*x(k+1,j);endforj=(i+1):nq=q+a(i,j)*x(k,j);endx(k+1,i)=(b(i)-q-p)/a(i,
6、i);endl=0;%判定满足条件使循环停止迭代。fori=1:nl=l+abs(x(k+1,i)-x(k,i));endifl7、ndb=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];k=1;n=length(a);fori=1:nx(1,i)=0;%数组中没有第0行。endwhilek>=1ifw>=2
8、
9、w<=1'请重新输入w的值,w在1与2之间';breakendfori=1:np=0;q=0;forj=1:(i-1)p=p+a(i,j)*x(k+1,j);endforj=i:nq=q+a(i,j)*x(k,j);endx(k+1,i)=x(k,i)+w*(b(i)-q-p)/a(i,i);en
10、dl=0;%判定满足条件使循环停止迭代。fori=1:nl=l+abs(x(k+1,i)-x(