资源描述:
《高斯-塞德尔迭代法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告一.实验名称:高斯-塞德尔迭代法二.实验目的:理解解线形方程组的迭代法,会编写解线性形方程组的迭代算法(高斯-赛德尔迭代法)。三.实验内容:用matlab实现高斯-赛德尔迭代法,并用其解线性方程组:四.实验基础知识及原理:1.)高斯-赛德尔迭代法计算公式:(Ax=b)误差计算:2.)高斯-赛德尔迭代法算法步骤:设Ax=b,其中A∈Rn×n为非奇异矩阵切aii≠0(i=1,2,…,n),本算法用高斯-赛德尔迭代法解Ax=b,数组x(n)开始存放x(0),后存放x(k),N0为最大迭代次数。1、xi←0.0(
2、i=1,2,…,n)2、对于k=1,2,…,N0迭代一次,这个算法需要的运行次数至多与矩阵A的非零元素的个数一样多。五.具体实验过程1)算法设计和代码:function[x_result]=Gauss_Seidel(A,b,e)%---------该函数只是针对实验提供的矩阵,精确值是确定的,其他线性方程组要先求出精确值%A为系数矩阵%b为结果矩阵%e为误差范围[row,cod]=size(A);accuracy=[1,1,1]';%精确值disp(['精确值为:',num2str(accuracy')]);%%
3、对系数矩阵分解A=M-N=(D-L)-U,x(k+1)=Bx(k+1)*+fD=blkdiag(A(1,1),A(2,2),A(3,3));%A的对角阵L=tril(-A,-1);%A的下三角阵U=triu(-A,1);%A的上三角阵B=(D-L)U;f=(D-L)(b');%开始迭代x0=[0,0,0]';%初始量e_temp=norm((x0-accuracy),inf);%求x0-accurate的无穷范数,即精确值number_cicle=1;disp('迭代次数误差迭代值');while(e_tem
4、p>e)fori=1:rowk=B(i,:);l=f(i,:);x_temp=k*x0+l;x0(i,1)=x_temp;end;e_temp=norm((x0-accuracy),inf);x_result=x0;fprintf('%d%f',number_cicle,e);disp(x_result');number_cicle=number_cicle+1;end;end;2)测试结果:六.实验心得: