数值分析课程作业论文.doc_第1页
数值分析课程作业论文.doc_第2页
数值分析课程作业论文.doc_第3页
数值分析课程作业论文.doc_第4页
数值分析课程作业论文.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

青岛农业大学 本科生课程论文题 目: 数值分析课程设计论文 姓 名: 学 院: 专 业: 信息与计算科学 班 级: 学 号: 指导教师: 完成时间: 2014年12月01日 二一四年十二月一日课 程 论 文 任 务 书学生姓名 张某某 指导教师 论文题目 数值分析课程设计论文 论文内容(需明确列出研究的问题): 研究运用拉格朗日和牛顿差 值、雅克比迭代法和高斯-塞德儿迭代法、用高斯消去法解方程组, 同时也讨论了多种方法的求解问题。资料、数据、技术水平等方面的要求:论文要符合一般学术论文的写作规范,具备学术性、科学性和一定的创造性。文字要流畅、语言要准确、论点要清楚、论据要准确、论证要完整、严密,有独立的观点和见解。内容要理论联系实际,计算数据要求准确,涉及到他人的观点、统计数据或计算公式等要标明出处,结论要写的概括简短。参考文献的书写按论文中引用的先后顺序连续编码。 发出任务书日期2014.11.28 完成论文(设计)日期 2014.12.01学科组或教研室意见(签字) 院、系(系)主任意见(签字) 目 录摘要前言 1一 拉格朗日插值和牛顿插值的运用及其解法 31.1理论知识、设计思路、算法步骤 41.2程序运行操作过程与输出结果 4二、高斯(Gauss)消去法 72.1理论知识、设计思路、算法步骤 82.2程序运行操作过程与输出结果 9三、雅可比迭代法和高斯-塞德尔迭代法 103.1理论知识、设计思路、算法步骤 113.2程序运行操作过程与输出结果.11四、在课程设计中的心得体会 17五、课程设计自我评价 17参考文献 18 数值分析课程设计论文 专业 指导教师 【摘要】本文主要介绍了数值分析中的拉格朗日插值、牛顿插值及其均差的运用和计算,还有雅克比迭代法和高斯-塞德儿迭代法用法及解题的方法。同时运用MATLAB软件进行数学计算结果,把单纯的数学问题实际化和具体化,加强对于MATLAB的应用,增加对于该软件的理解和熟练。还介绍了数值分析的理论及实用知识,通过例题详细地讲述了如何利用MATLAB软件实现各种数值算法,以便读者实际动手实现算法及观察不同数值算法的实际计算效果。【关键词】高斯-塞德儿迭代法 雅克比迭代法 拉格朗日插值 牛顿插值前言本论文是主要是部分课题的解答及分析,根据题目要求对论文进行了解答分析同时介绍了少部分知识和MATLAB的操作用法。主要如下:(1)在内容上严格按照要求,一步步仔细分析解答,同时配有图片证明,认真分析理解拉格朗日插值、牛顿插值的方法运用。还有收敛性的分析,同时以例题进行验证和解答,让大家可以清晰简单的理解。(2)在格式上每个例题都是认真分析,每个题后都有课后的见解和对题目的理解,有助于读者加深对基本内容的理解。本论文因是本人的初级论文,所以有些疏漏,希望使用本论文的老师和同学对本书存在的问题给予批评指正。作 者2014年12月一、拉格朗日插值和牛顿插值的运用及其解法根据下表所列的数据点求出四次拉格朗日插值多项式及牛顿插值多项式,并计算当x=2.0时的值。0.20.40.60.81.00.980.920.810.640.38(一)理论知识插值法是一种古老的数学方法,来自与生产实践。但是具体的插值理论都是在十七世纪微积分产生以后才逐步发展的,拉格朗日插值、牛顿插值都是当时重要的成果在这里先详细介绍拉格朗日插值随后介绍牛顿插值。拉格朗日插值1一般地,若已知y=f(x)在互不相同 n+1 个点x0,x1,x2.,xn处的函数值y0,y1,y2.,yn( 即该函数过(x0,y0)(x1,y1)(x2,y2).(xn,yn)这n个点),则可以考虑构造一个过这n+1 个点的、次数不超过n的多项式y=Pn(x),使其满足:Pn(xk)=yk, k=0,1,2,.,n (*)要估计任一点,xi,i=0,1,2,.,n,则可以用Pn()的值作为准确值f()的近似值,此方法叫做“插值法”。称式(*)为插值条件(准则),含xi(i=0,1,.,n)的最小区间a,b(a=minx0,x1,.,xn,b=maxx0,x1,.,xn)(二) 程序清单拉格朗日插值function f=Lagrange(x,y,x0)% 求已知数据点的拉格朗日插值多项式% 已知数据点的x坐标向量:x% 已知数据点的y坐标向量:y%插值的x坐标:x0%求得的拉格朗日插值多项式在x0处的插值:fsyms t; %定义符号变量x= 0.2 0.4 0.6 0.8 1 ;y=0.98 0.92 0.81 0.64 0.38;if(length(x)=length(y)n=length(x);else disp(x和y的维数不相等!); return;end %检验错误f=0.0;for(i=1:n) l=y(i); for(j=1:i-1) l=l*(t-x(j)/(x(i)-x(j); end; for(j=i+1:n) l=l*(t-x(j)/(x(i)-x(j);%计算拉格朗日基函数 end; f=f+l; %计算拉格朗日插值函数 simplify(f); %化简if(i=n)if(nargin=3) % nargin是用来判断输入变量个数的函数 f=subs(f,t,x0); %计算插值点的函数值,把xo赋给t带入f中计算,结果赋给f else f=collect(f); %将插值多项式展开 f=vpa(f,6); %将插值多项式的系数化成6位精度的小数 end endend、牛顿插值2function f = Newton(x,y,x0)syms t;x= 0.2 0.4 0.6 0.8 1 ;y=0.98 0.92 0.81 0.64 0.38;if(length(x) = length(y) n = length(x); c(1:n) = 0.0;else disp(x和y的维数不相等!); return;end f = y(1);y1 = 0;l = 1;for(i=1:n-1) for(j=i+1:n) y1(j) = (y(j)-y(i)/(x(j)-x(i); end c(i) = y1(i+1); l = l*(t-x(i); f = f + c(i)*l; simplify(f); y = y1; if(i=n-1) if(nargin = 3) f = subs(f,t,x0); else f = collect(f); %将插值多项式展开 f = vpa(f, 6); end endend(三) 程序运行操作过程与输出结果在命令窗口输入x= 0.2 0.4 0.6 0.8 1 ;y=0.98 0.92 0.81 0.64 0.38;x0=2.0;Lagrange(x,y,x0) 回车ans =-4.7200在命令窗口输入x= 0.2 0.4 0.6 0.8 1 ;y=0.98 0.92 0.81 0.64 0.38;x0=2.0;Newton(x,y,x0) 回车ans =-4.7200以下是截图和在MATLAB中的解法答案(四) 对计算过程与结果的分析运算拉格朗日插值时,有部分函数和用法需要熟练掌握和运用,同时详细分析题目,合理的分析,将自己的写成的程序输入到MATLAB中进行运行。在MATLAB中,当没有你需要的函数或者程序时,需要构造M文件,重新确定自己需要的函数和程序,在进行下面的计算。若MATLAB中没有你需要的函数和自己构造的M文件,那么将无法进行题目的解答。同时拉格朗日插值和牛顿插值的原理需要牢记并且能熟练运用。拉格朗日插值法在求每个基本多项式的时候要用到所有那些结点,因此如果需要再多加进去一个结点的话,需要重新求出基本多项式才可,而这需要大量的工程, 而拉格朗日法插值是通过求各阶差商,递推得到的一个二、高斯(Gauss)消去法. 用列主元Gauss消去法解方程组(一)理论知识定理:当一个方阵A的1-(n-1)阶顺序主子式都不为0时,A存在唯一的doolittle(杜利特尔)分解。对于满足条件的这个方阵,采用直接三角分解法可以得到这个唯一的L、U矩阵。但事实上,matlab的lu函数并不是采用直接三角分解法,因为直接三角分解法存在着引入很大舍入误差的可能(直接分解法过程中,当对角元为零或很小时)。matlab的lu函数采用的是列主元三角分解法,又称为PLU分解,实现LU=PA。该分解法要求的前提条件是A为非奇异矩阵。(二)程序清单列主元Gauss消去法MATLAB程序如下:%magauss2.mfunction x=magauss2(A,b,flag)%用途:列主元Gauss消去法解线性方程组Ax=b%格式:x=magauss(A,b,flag),A为系数矩阵,b为右端项,若flag=0,则不显示中间过程,否则显示中间过程,默认为0,x为解向量if nargink t=A(k,:);A(k,:)=A(p,:);A(p,:)=t; t=b(k);b(k)=b(p);b(p)=t; end %消元 m=A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n); b(k+1:n)=b(k+1:n)-m*b(k);A(k+1:n,k)=zeros(n-k,1); if flag=0, Ab=A,b,endend%回代x=zeros(n,1);x(n)=b(n)/A(n,n);for k=n-1:-1:1 x(k)=(b(k)-A(k,k+1:n)*x(k+1:n)/A(k,k);end (三)操作过程及运行结果在MATLAB命令窗口执行b=3 1 -7; A=2 2 3;4 7 7;-2 4 5; n,n = size(A); x = zeros(n,1); Aug = A,b; %增广矩阵 for k = 1:n-1 piv,r = max(abs(Aug(k:n,k); %找列主元所在子矩阵的行r r = r + k - 1; % 列主元所在大矩阵的行 if rk temp=Aug(k,:); Aug(k,:)=Aug(r,:); Aug(r,:)=temp; end if Aug(k,k)=0, error(对角元出现0), end % 把增广矩阵消元成为上三角 for p = k+1:n Aug(p,:)=Aug(p,:)-Aug(k,:)*Aug(p,k)/Aug(k,k); end end % 解上三角方程组 A = Aug(:,1:n); b = Aug(:,n+1); x(n) = b(n)/A(n,n); for k = n-1:-1:1 x(k)=b(k); for p=n:-1:k+1 x(k) = x(k)-A(k,p)*x(p); end x(k)=x(k)/A(k,k);endxx = 2 -2 1(四) 对计算过程与结果的分析该题运用高斯消去法及消去法和矩阵三角分解之间的关系,用消去法解线性方程组的基本思想是使用逐次消去未知数的方法把原线性方程组化为与其等价的三角形线性方程组,而求解三角形线性方程可用回带的方法求解。通过直接求解及利用高斯消去法求解线性方程组可以看出高斯消去法的三角分解法求解一般来说列主元法就能确保算法的稳定,所谓算法的稳定是指在运算过程中计算误差(对消去法这种直接法来说主要指由于计算机字长有限带来的舍入误差)能得到控制,列主元法更稳定的算法,但它的计算量大,列主元法在每做一次消元仅与同列的元素做比较,比较的次数与线性方程组的阶n是同阶的量。三、雅可比迭代法和高斯-塞德尔迭代法用雅可比迭代法和高斯-塞德尔迭代法求线性方程组的解,初始迭代值,求近似解使其满足以下运用了两种方法进行求解雅可比迭代法(一)理论知识考虑线性方程组Ax =b时,一般当A为低阶稠密矩阵时,用主元消去法解此方程组是有效方法。但是,对于由工程技术中产生的大型稀疏矩阵方程组(A的阶数很高,但零元素较多,例如求某些偏微分方程数值解所产生的线性方程组),利用迭代法求解此方程组就是合适的,在计算机内存和运算两方面,迭代法通常都可利用A中有大量零元素的特点。雅克比迭代法就是众多迭代法中比较早且较简单的一种。(二)程序清单i=1;a=0.9889,-0.0005,-0.0002,0.3372;-0.0046,0.9946,0.0077,0.5381;-0.0002,0.0092,0.9941,0.1936;-0.8002,0.5671,0.1849,0.3891;d=diag(diag(a);l=d-tril(a);u=d-triu(a);d0=inv(d);b=1;0;1;0;x0=ones(4,1);B=d0*(l+u);f=d0*b;x=B*x0+f;while norm(x-x0,inf)=1e-6 x0=x; x=B*x0+f; i=i+1;endxi(三)操作过程及运行结果x = 0.3452 -1.0593 0.6357 1.9519i =20(四) 对计算过程与结果的分析雅克比迭代法的优点明显,计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易并行计算。然而这种迭代方式收敛速度较慢,而且占据的存储空间较大。高斯-塞德尔(Gauss-Seidel)(一)理论知识高斯-塞德尔迭代法3,设Ax=b,其中A为非奇异矩阵且aii0(i=1,2,n),本算法用高斯-塞德尔迭代法解Ax=b,数组x(n)开始存放x(0),后存放x(k),N0为最大迭代数。1.xi0.0(i=1,2,n)2.对于k=1,2,N0对于i=1,2,n xi(bi-j=1i-1aijxj-j=i=1naijxj)/aii(二)程序清单i=1;a=0.9889 -0.0005 -0.0002 0.3372;-0.0046 0.9946 0.0077 0.5381;-0.0002 0.0092 0.9941 0.1936;-0.8002 0.5671 0.1849 0.3891;d=diag(diag(a);l=d-tril(a);u=d-triu(a);b=1;0;1;0;x0=ones(4,1);B=inv(d-l)*u;f=inv(d-l)*b;x=B*x0+f;while norm(x-x0,inf)=1e-6 x0=x; x=B*x0+f; i=i+1;endxi(三).程序运行结果输出x= 0.3452 -1.0593 0.6357 1.9519i =10(四) 对计算过程与结果的分析一种非线性代数方程组的迭代解法。最早用于解算电力系统潮流。这种方法具有程序编制简单、占用内存少的优点,但算法收敛性差,计算时间长。由此例可知,用高斯-塞德尔迭代法,雅可比迭代法解线性方程组均收敛,而高斯-塞德尔迭代法比雅可比迭代法收敛较快,但这个结论只当A满足一定条件才可以。四、在课程设计中的心得体会通过对Matlab软件的使用,了解到Matlab软件的强大,很容易解决数值分析中不好解决的内容,通过Matlab软件,知道了用列主元Gauss消去法解方程,雅可比迭代法,高斯-塞德尔迭代法求解还有根据表格所列的数据点求出四次拉格朗日插值多项式及牛顿插值多项式,知道了他们各自的优缺点,该如何更简单的利用他们,更快的求解问题。在设计过程中,我遇到了不少的问题。第一是M文件的问题,每次写好程序进行调试,总是不经意间忘掉重新构造函数创建M文件。若没有创建M文件,并且系统软件没有你需要的函数或者公式,则你所需要的函数或者公式就无法进行计算工作,导致出现问题,无法得到正确的结果。第二就是程序的编写是一个让人头痛的事情,当你不全部编写玩你就无法知道哪里出了错

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论