您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 计算方法jacobi迭代法与高斯seidel迭代法实验
实验名称:实验3jacobi迭代法与Gauss-seidel迭代法实验题目:给定线性方程组Ax=b如下15831110225311621043243214321321xxxxxxxxxxxxxx实验目的:掌握用jacobi迭代法与Gauss-seidel迭代法求解线性方程组的基本步骤。基础理论:jacobi迭代法基本思路是方程组Ax=b等价于x=Bx+f,然后通过迭代算出方程组的解;Gauss-seidel迭代法主要是通过对A的分解,构造迭代公式,进而迭代算出方程组的解。实验环境:操作系统:WindowsXP;实验平台: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);fori=1:nfprintf('\%f',x0(i));end%以下是迭代过程fork=1:N%这是第k步迭代,迭代前的向量在x0[]中,迭代后的在x[]中normal=0;fori=1:nx(i)=b(i);forj=1:nifj~=ix(i)=x(i)-A(i,j)*x0(j);endendx(i)=x(i)/A(i,i);temp=abs(x(i)-x0(i));%求范数与迭代在同一个循环中iftempnormalnormal=temp;%这里用的是无穷范数endend%第i步迭代结束fprintf('\n%d:',k);fori=1:nx0(i)=x(i);%为下一次迭代准备初值fprintf('%f',x(i));%输出迭代过程endifnormalepsilonreturn;endendfprintf('\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);fori=1:nfprintf('\%f',x(i));end%以下是迭代过程fork=1:N%这是第k步迭代,迭代前的向量在x0[]中,迭代后的在x[]中normal=0;fori=1:nt=x(i);x(i)=b(i);forj=1:nifj~=ix(i)=x(i)-A(i,j)*x(j);endendx(i)=x(i)/A(i,i);temp=abs(x(i)-t);%求范数与迭代在同一个循环中iftempnormalnormal=temp;%这里用的是无穷范数endend%第i步迭代结束fprintf('\n%d:',k);fori=1:nfprintf('%f',x(i));%输出迭代过程endifnormalepsilonreturn;endendfprintf('\n\n迭代%d次后仍未求得满足精度的解\n',N);结果:结果分析:Gauss-seidel迭代法解线性方程组迭代的次数较少。附录:
本文标题:计算方法jacobi迭代法与高斯seidel迭代法实验
链接地址:https://www.777doc.com/doc-6074577 .html