资源描述:
《解线性方程组基本迭代法实验(ca).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Lab.解线性方程组的基本迭代法实验【实验目的和要求】1.使学生深入理解Jacobi迭代法、Gauss-Seidel迭代法和SOR迭代法;2.通过对Jacobi迭代法、Gauss-Seidel迭代法和SOR迭代法的程序设计,以提高学生程序设计的能力;3.应用编写的程序解决具体问题,掌握三种基本迭代法的使用,通过结果的分析了解每一种迭代法的特点。【实验内容】1.根据Matlab语言特点,描述Jacobi迭代法、Gauss-Seidel迭代法和SOR迭代法。2.编写Jacobi迭代法、Gauss-Seidel迭代法和
2、SOR迭代法的M文件。3.给定为五对角矩阵(1)选取不同的初始向量及右端面项向量b,给定迭代误差要求,分别用编写Jacobi迭代法和Gauss-Seidel迭代法程序求解,观察得到的序列是否收敛?若收敛,通过迭代次数分析计算结果并得出你的结论。(2)用编写的SOR迭代法程序,对于(1)所选取的初始向量及右端面项向量b进行求解,松驰系数ω取1<ω<2的不同值,在时停止迭代,通过迭代次数分析计算结果并得出你的结论。【实验仪器与软件】1.CPU主频在1GHz以上,内存在128Mb以上的PC;2.Matlab6.0及以上
3、版本。实验讲评:实验成绩:评阅教师:年月日解线性方程组的基本迭代法实验报告一、算法描述得到则有:第一步Jacobi迭代法令则称为雅克比迭代矩阵由此可得雅克比迭代的迭代格式如下:第二步Gauss-Seidel迭代法令,则称为Gauss-Seidel迭代矩阵由此可得Gauss-Seidel迭代的迭代格式如下:第三步SOR迭代法令,则有:令带入的值可有称为SOR迭代矩阵由此可得SOR迭代的迭代格式如下:二、算法程序Jacobi迭代法的M文件:function[y,n]=Jacobi(A,b,x0,eps)%******
4、*******************************************%函数名称Jacobi雅克比迭代函数%参数解释A系数矩阵%b常数项%x0估计解向量%eps误差范围%返回值%y解向量%n迭代次数%函数功能实现线性方程组的Jacobi迭代求解%*************************************************n=length(A);ifnargin<3error('输入错误,最少要输入三个参数');return;endifnargin==3eps=1e-6;end
5、D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);M=D;N=L+U;B=MN;f=Mb;ifmax(abs(eig(B)))>=1disp('谱半径大于等于1,迭代不收敛,无法进行');return;endn=1;fori=1:1:nifsum(A(i,i)~=n)~=nerror('输入的A矩阵的对角线元素不能为0');return;endendy=B*x0+f;whilenorm(y-x0)>=eps&n<100x0=y;y=B*x0+f;n=n+1;endGauss
6、-Seidel迭代法的M文件和function[y,n]=GaussSeidel(A,b,x0,eps)%*************************************************%函数名称GaussSeidel高斯赛德尔迭代函数%参数解释A系数矩阵%b常数项%x0估计解向量%eps误差范围%返回值%y解向量%n迭代次数%函数功能实现线性方程组的Jacobi迭代求解%*************************************************n=length(A);i
7、fnargin<3%针对这个nargin我还有一个疑问,过一段时间在来处理他!error('输入错误,最少要输入三个参数');return;endifnargin==3eps=1e-6;endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);M=D-L;N=U;B=MN;f=Mb;ifmax(abs(eig(B)))>=1disp('谱半径大于等于1,迭代不收敛,无法进行');return;endn=1;fori=1:1:nifsum(A(i,i)~=n)~=nerror(
8、'输入的A矩阵的对角线元素不能为0');return;endendy=B*x0+f;whilenorm(y-x0)>=eps&n<100x0=y;y=B*x0+f;n=n+1;endSOR迭代法的M文件function[y,n]=SOR(A,b,x0,w,eps)%*************************************************%函数名称