您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数值分析课程实习报告-迭代法求取线性方程组的近似解
课程实习报告课程名称:数值分析课程实习实习题目:利用Matlab软件编程运用迭代法求取线性方程组的近似解姓名:系:专业:年级:学号:指导教师:职称:年月日课程实习报告评分表序号项目评分权值评定成绩1算法:正确,步骤合理0.32程序:画流程图,用语言或数学软件编写0.23质量:分析处理科学;文字通顺;计算及测试结果准确;0.44工作量、工作态度:按期完成规定的任务,工作量饱满;工作努力,遵守纪律0.1合计1指导教师签名:年月日目录1.实习的目的和任务...................................................................................................................12.实习要求...................................................................................................................................13.实习地点...................................................................................................................................14.主要仪器设备...........................................................................................................................15.实习内容...................................................................................................................................15.1算法思想........................................................................................................15.2实习步骤........................................................................................................35.3流程图............................................................................................................35.4MATLAB程序..............................................................................................55.5实例分析........................................................................................................85.6结果分析......................................................................................................326.总结..........................................................................................................................................35参考文献........................................................................................................................................361数值分析课程实习1.实习的目的和任务目的:熟练运用MATLAB数学软件,了解数值计算方法及其应用,提高计算的效率和计算的精度,针对题目编制程序,通过课程实习达到能够应用软件解决实际问题。任务:编写运用迭代法解线性方程组的近似解的程序,用Jacobi迭代法、Gauss-Seidel迭代法、逐次超松弛迭代法研究数值问题。掌握Jacobi迭代法、Gauss-Seidel迭代法、逐次超松弛迭代法的格式,以及掌握迭代收敛性及收敛速度的判断。2.实习要求从线性方程组迭代法的基本思想中,转变为MATLAB代码,深化对求解线性方程组的近似解的解法知识的理解。根据给定的系数矩阵A和右端矩阵b,利用公式去编写MATLAB代码,对所求的结果进行比较,并进行收敛性及收敛速度的判断。深入对线性方程组解法的认识的,掌握更多的方法来求得方程组的解。3.实习地点数学实验室、学生宿舍4.主要仪器设备硬件:计算机软件:MicrosoftWindows7MATLAB7.05.实习内容5.1算法思想根据方程组Axb设计出一个迭代公式,然后将任意选取的一初始向量(0)x代入迭代公式,求出(1)x,再以(1)x代入同一迭代公式,求出(2)x,如此反复进行,得到向量序列(){}kx。当(){}kx收敛时,其极限即为原方程组的解。设方程组:1,(1,2,...,)nijjijaxbin,记作Axb。5.1.1Jacobi迭代法2迭代公式:(0)(0)0(0)12(1)()1(,,...)1()Tnnkkiiijjiiijixxxxxbaxa,其中()()()()12(,,...,)kkkkTnxxxx为第k次迭代向量,(1)(0,1,2,...;1,2,...,)kxkin为下一次迭代向量。迭代矩阵:(0)(1)()0()kkxxBxf初始向量其中10()BDLD,1fDb。且5.1.2Gauss-Seidel迭代法迭代公式:(1)()1(1)()1,(0,1,2,...;1,2,...,),1().kkiiiinkkiiijiijjjjiiixxxkinxbaxaxa迭代矩阵:(1)()kkxGxf,其中1()GDLU,1()fDLb。5.1.3逐次超松弛迭代法()SOR迭代公式:1(1)()(1)()1()()()()12(),(,,...,),(0,1,...;1,2,...,)inkkkkiiiijjijjjjiiikkkkTnxxbaxaxaxxxxkin其中为松弛因子。当1时,SOR迭代法就转化为GaussSeidel迭代法。迭代矩阵:(1)()kkxLxf。其中1()[(1)]LDLDU,1()fDLb。三个迭代法中,,DUL矩阵为:1122nnaaDa,121312321,0000nnnnaaaaaUa,21313212,10000nnnnaaaLaaa35.2实习步骤1、先对Jacobi迭代法、Gauss-Seidel迭代法、逐次超松弛迭代法这三种迭代法进行MATLAB代码编写,并对三个代码绘制模块图。2、根据实例中的系数矩阵A和右端矩阵b,给定迭代误差为1e-5,用Jacobi迭代法、Gauss-Seidel迭代法和逐次超松弛迭代法进行计算。而逐次超松弛迭代法要在5个不同的松弛因子下进行计算,迭代误差也为1e-5。3、分析结果,对Jacobi迭代法、Gauss-Seidel迭代法的结果进行比较收敛性和收敛速度,并且比较一下逐次超松弛迭代法在10个不同的松弛因子下进行计算的结果情况,分析计算结果并给出结论,并对三种迭代法进行评价。5.3流程图5.3.1Jacobi迭代法流程图判断收敛开始输入系数矩阵A、右端矩阵b、初始向量x0将A分为三个矩阵对角阵D、下三角阵-L、上三角阵-U,A=D-L-U带入B=D-1(L+U),f=D-1b带入x(k+1)=Bx(k)+f求出迭代值判断迭代精度结果在精度之内结束45.3.2Gauss-Seidel迭代法流程图5.3.3逐次超松弛迭代法流程图判断收敛开始输入系数矩阵a、右端矩阵b、初始向量x0将a分为三个矩阵对角阵D、下三角阵-L、上三角阵-U,a=D-L-U带入B=(D-wL)-1[(1-w)D+wU],f=w(D-wL)-1b带入x(k+1)=Bx(k)+f求出迭代值判断迭代精度结果在精度之内结束判断收敛开始输入系数矩阵a、右端矩阵b、初始向量x0将a分为三个矩阵对角阵D、下三角阵-L、上三角阵-U,a=D-L-U带入B=(D-L)-1U,f=(D-L)-1b带入x(k+1)=Bx(k)+f求出迭代值判断迭代精度结果在精度之内结束55.4MATLAB程序5.4.1Jacobi迭代法MATLAB编程%jacobi迭代法计算线性方程组%tol为输入误差容限,x0为迭代初值function[x,k]=Fjacobi(A,b,x0,tol)D=diag(diag(A));%求A的对角阵L=-tril(A,-1);%求A的下三角阵U=-triu(A,1);%求A的上三角阵B=D\(L+U);f=D\b;x=B*x0+f;%迭代公式k=0;%迭代次数[v,d]=eig(B);C=diag(d);formatlongifsum(abs(C)=1)0disp('谱半径大于1,迭代方程不收敛');return;elsewhilenorm(x-x0)=tolx0=x;x=B*x0+f;k=k+1;str=strcat(['第'num2str(k)'次迭代后的值:']);disp(str);disp(x);endstr1=strcat('在误差容许范围内,近似解为:');disp(str1);end65.4.2Gauss-Seidel迭代法MATLAB编程%Gauss-Seidel迭代法计算线性方程组%tol为误差容限function[x,k]=Fgseid(A,b,x0,tol)max1=300;%默认最高迭代300次D=diag(diag(A));%求A的对角阵L=-tril(A,-1);%求A的下三角阵U=-triu(A,1);%求A的上三角阵G=(D-L)\U;f=(D-L)\b;x=G*x0+f;%迭代公式k=0;%迭代次数[v,d]=eig(G);C=diag(d);formatlong;ifsum(abs(C)=1)0disp('谱半径大于1,迭代方程不收敛');return;elsewhilenorm(x-x0)=tolx0=x;x=G*x0+f;k=k+1;str=strcat(['第'num2str(k)'次迭代后的值:']);disp(str);disp(x);endstr1=strcat('在误差容许范围内,近似解为:');disp(str1);end75.4.3逐次超松弛迭代法MATLAB编程function[x,k]=Fsor(A,b,x0,w,tol)max=300;%迭代最大次数if(w=0||w=2)%对松弛因子做出限制error;return;endD=diag(diag(A));%求A的对角矩阵L=-tril(A,-1);%求A的下三角阵U=-triu(A,1);%求A的上三角阵B=inv(D-L*w)*((1-w)*D+w*U);f=
本文标题:数值分析课程实习报告-迭代法求取线性方程组的近似解
链接地址:https://www.777doc.com/doc-2387536 .html