资源描述:
《数值分析线性方程组迭代法实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告一、实验目的体会求解线性方程组的Jacobi迭代法和Gauss-Seidel迭代法的收敛速度。二、实验题目用迭代法分别对解方程组,其中(1)选取不同的初值和不同的右端向量,给定迭代误差,用Jacobi迭代法和Gauss-Seidel迭代法计算,观测得到的迭代向量并分析计算结果给出结论;(2)取定初值和右端向量,给定迭代误差,将的主对角元成倍放大,其余元素不变,用Jacobi迭代法计算多次,比较收敛速度,分析计算结果并给出结论。三、实验原理求解线性方程组的Jacobi迭代法和Gauss-Seidel迭代法四、实验内容及结果1.Jacob
2、i迭代法:1)先输入Jacobi迭代的M程序,在MATLAB的M文件窗口中输入以下内容并保存:functionx=majacobi(A,b,x0,ep,N)n=length(b);ifnargin<5,N=500;endifnargin<4,ep=1e-6;endifnargin<3,x0=zeros(n,1);endx=zeros(n,1);k=0;whilek3、eak;endx0=x;k=k+1;endifk==N,Warning('已达到迭代次数上限');enddisp(['k=',num2str(k)])2)再输入A,b,x0,在M文件窗口输入以下内容并保存:n=20;A=diag(4*ones(1,n));B=diag(-1/3*ones(1,n-1),1);C=diag(-1/5*ones(1,n-2),2);A=A+B+C+B'+C';b=ones(n,1);x0=zeros(n,1);x=majacobi(A,b,x0)x’3)在MATLAB的主程序窗口输出以下结果:k=10ans=Co
4、lumns1through100.29350.31950.33660.33940.34060.34080.34090.34090.34090.3409Columns11through200.34090.34090.34090.34090.34080.34060.33940.33660.31950.29352.Gauss-Seidel迭代法:1)先输Gauss-Seidel迭代的M程序,在MATLAB的M文件窗口中输入以下内容并保存:functionx=maseidel(A,b,x0,ep,N)n=length(b);ifnargin<5,N=
5、500;endifnargin<4,ep=1e-6;endifnargin<3,x0=zeros(n,1);endx=zeros(n,1);k=0;whilek6、break;endx0=x;k=k+1;endifk==N,Warning('已达到迭代次数上限');enddisp(['k=',num2str(k)])2)再输入A,b,x0,在M文件窗口输入以下内容并保存:n=20;A=diag(4*ones(1,n));B=diag(-1/3*ones(1,n-1),1);C=diag(-1/5*ones(1,n-2),2);A=A+B+C+B'+C';b=ones(n,1);x0=zeros(n,1);x=maseidel(A,b,x0);x'3)在MATLAB的主程序窗口输出以下结果:k=7ans=
7、Columns1through100.29350.31950.33660.33940.34060.34080.34090.34090.34090.3409Columns11through200.34090.34090.34090.34090.34080.34060.33940.33660.31950.29353.选区不同的x0值和不同的右端向量b,只需要改变第二步中的b和x0值,具体程序如下:Jacobi的第二次迭代:n=20;A=diag(4*ones(1,n));B=diag(-1/3*ones(1,n-1),1);C=diag(-1/5
8、*ones(1,n-2),2);A=A+B+C+B'+C';b=2*ones(n,1);x0=ones(n,1);x=majacobi(A,b,x0)x’Gauss