文档详情

计算方法jacobi迭代法与高斯seidel迭代法实验.doc

发布:2017-03-30约字共6页下载文档
文本预览下载声明
实验名称:实验3 jacobi迭代法与Gauss-seidel迭代法 实验题目:给定线性方程组Ax=b如下 实验目的:掌握用jacobi迭代法与Gauss-seidel迭代法求解线性方程组的基本步骤。 基础理论:jacobi迭代法基本思路是方程组Ax=b等价于x=Bx+f,然后通过迭代算出方程组的解;Gauss-seidel迭代法主要是通过对A的分解,构造迭代公式,进而迭代算出方程组的解。 实验环境:操作系统:Windows XP; 实验平台:matlab 实验过程: 方法一: jacobi迭代法 程序: n=4;A=[10,-1,2,0;-1,11,-1,3;2,-1,10,-1;0,3,-1,8]; b=[6,25,-11,15];x0=[0,0,0,0]; x0=zeros(n,1);x=x0; epsilon=input(\n精度=);N=input(\n最大迭代次数N=); fprintf(\n%d:,0); for i=1:n fprintf(\%f,x0(i)); end %以下是迭代过程 for k=1:N %这是第k步迭代,迭代前的向量在x0[]中,迭代后的在x[]中 normal=0; for i=1:n x(i)=b(i); for j=1:n if j~=i x(i)=x(i)-A(i,j)*x0(j); end end x(i)=x(i)/A(i,i);temp=abs(x(i)-x0(i));%求范数与迭代在同一个循环中 if temp normal normal=temp; %这里用的是无穷范数 end end %第i步迭代结束 fprintf(\n%d:,k); for i=1:n x0(i)=x(i); %为下一次迭代准备初值 fprintf(%f,x(i)); %输出迭代过程 end if normal epsilon return; end end fprintf(\n\n迭代%d次后仍未求得满足精度的解\n,N); 结果: 结果分析: jacobi迭代法解线性方程组迭代的次数较多。 方法二:Gauss-seidel迭代法 程序: n=4; A=[10,-1,2,0;-1,11,-1,3;2,-1,10,-1;0,3,-1,8]; b=[6,25,-11,15];x=[0,0,0,0]; epsilon=input(\n精度=); N=input(\n最大迭代次数N=); fprintf(\n%d:,0); for i=1:n fprintf(\%f,x(i)); end %以下是迭代过程 for k=1:N %这是第k步迭代,迭代前的向量在x0[]中,迭代后的在x[]中 normal=0; for i=1:n t=x(i); x(i)=b(i); for j=1:n if j~=i x(i)=x(i)-A(i,j)*x(j); end end x(i)=x(i)/A(i,i); temp=abs(x(i)-t);%求范数与迭代在同一个循环中 if temp normal normal=temp;%这里用的是无穷范数 end end %第i步迭代结束 fprintf(\n%d:,k); for i=1:n fprintf(%f,x(i)); %输出迭代过程 end if normal epsilon return; end end fprintf(\n\n迭代%d次后仍未求得满足精度的解\n,N); 结果: 结果分析: Gauss-seidel迭代法解线性方程组迭代的次数较少。 附 录:
显示全部
相似文档