数值分析论文数值分析中插值方法的分析与应用学生姓名:学号:学院:专业:指导教师:年月数值分析中插值方法的分析与应用摘要:数值分析是高等学校理工科一门重要的基础课程,主要研究数学方法的数值求解。数值分析是各种计算性科学的联系纽带和共性基础,是一门兼有基础性、应用性和边缘性的交叉学科,数值分析中插值法包括拉格朗日插值法、牛顿插值法、埃尔米特插值法等。本文主要介绍了各种插值方法的计算分析和推导,通过简单的例题进行算法分析并编程得出计算结果。关键字:数值分析;数值求解;插值法1绪论在最近的几十年中,随着计算机的发展,计算数学和应用数学中的各种方法也相应发展起来,特别是应用数学,它已经越来越渗透到其它非理工学科和各行各业中,尤其表现在生命科学、政治、军事、经济等非传统数学应用领域.同时许多教师在实践中也认识到,现有的大学数学教学内容与实际要求相去甚远.比如,几位大学计算机系毕业的学生,在面对工作中所遇见的一个非线性方程求根的问题时,他们既不知道该如何利用计算机编程求解,也不知道该如何利用计算机软件求解.某单位在LAMOS望远镜设计中,有一个复杂的概率计算问题,这个概率涉及到一个重积分,而且重积分的区问不能解析给出,负责计算的学生面对此问题感到不知所措.兴起于80年代末90年代初的数学建模比赛在一定程度上弥补了这个缺憾,参赛选手们通过参加比赛,激发了他们对数学的兴趣,也培养了他们应用数学工具解决实际问题的能力.虽然数学建模活动对学生的创造能力、应用能力有所帮助,但参加这个活动的学生毕竟是少数,这些做法并没有真正使广大学生掌握应用数学对实际问题的分析处理能力.那么,有没有这样一门课程,它既是必修课程,又具有像数学建模那样培养学生分析问题、解决问题能力的课程呢?事实上,现有的数学课程中,数值分析课程本身就具有一定的理论教学与实践的意义.数值分析是一门介绍适合于在计算机上使用的数值分析方法的课程,有时也称为计算方法课程,与其它相关数学课程相比,数值分析方法是偏重于应用的一门课程,其中的理论和方法不仅在其他专业课程中常常运用,而且在解决实际问题中也常常会用到.数值分析方法课程的基础是数学分析、线性代数、微分方程等数学理论,这些理论都为普通工科高等数学教育所覆盖,它的内容大体包括三个部分:数值逼近、数值代数、微分方程数值求解。2多种插值方法的分析比较数值分析插值法是一种古老的数学方法,它来自生产实践。利用计算机解决工程问题与常规手工计算的差异就在于它特别的计算方法.电机设计中常常需要通过查曲线、表格或通过作图来确定某一参量,如查磁化曲线、查异步电动机饱和系数曲线等.手工设计时,设计者是通过寻找坐标的方法来实现.用计算机来完成上述工作时,采用数值插值法来完成。因此学好数值分析的插值法很重要。2.1插值方法的定义插值方法是根据一组数据,如表1所示:表1插值数据表x1x2x3x4…xnF(x1)F(x2)F(x3)F(x4)…F(xn)求函数f(x)的近似表达式p(x)的方法.插值方法的必要条件是误差函数或余项R(x)=f(x)-p(x)满足关系式R(xi)=0(i=0,2,⋯n)当插值函数p(x)是多项式时,称为代数插值方法.代数插值方法有Lagrange插值方法,逐次线性插值法Newton插值方法,Hermite插值方法,分段插值方法和样条插值方法等.其基本思想都是用高次代数多项式或分段的低次多项式作被插函数p(x)的近似表达式。2.2常用的几种插值方法2.2.1Lagrange插值1.Lagrange插值基函数n+1个n次多项式nkjjjkjkxxxxxl0)(nk,,1,0称为Lagrange插值基函数2.Lagrange插值多项式设给定n+1个互异点))(,(kkxfx,nk,,1,0,jixx,ji,满足插值条件)()(kknxfxL,nk,,1,0的n次多项式nknkjjjkjkknkknxxxxxfxlxfxL000))(()()()(为Lagrange插值多项式,称njjxnnxxnfxLxfxE0)1()()!1()()()()(为插值余项,其中),()(baxx2.2.2Newton插值1.差商的定义)(xf关于ix的零阶差商)(][iixfxf)(xf关于ix,jx的一阶差商ijijjixxxfxfxxf][][],[依次类推,)(xf关于ix,1ix,……,kix的k阶差商ikikiikiikiiixxxxfxxfxxxf],,[],,[],,,[1112.Newton插值多项式设给定的n+1个互异点))(,(kkxfx,nk,,1,0,jixx,ji,称满足条件)()(kknxfxN,nk,,1,0的n次多项式)()](,,,[)](,[][)(10100100nnnxxxxxxxfxxxxfxfxN为Newton插值多项式,称],[,)(],,,[)()()(010baxxxxxxfxNxfxEnjjnn为插值余项。2.2.3Hermite插值设],[)(1baCxf,已知互异点0x,1x,…,],[baxn及所对应的函数值为0f,1f,…,nf,导数值为'0f,'1f,…,'nf,则满足条件nifxHfxHiiniin,,1,0,)(,)(''1212的12n次Hermite插值多项式为)()()(0'12xfxfxHjnjjjnjin其中)())((,)]()(21[)(22'xlxxxlxlxxxjjjjjjjj称为Hermite插值基函数,)(xlj是Lagrange插值基函数,若],[22baCfn,插值误差为220)22(12)()()!22()()()(nxnnxxxxnfxHxf,),()(baxx2.2.4分段插值设在区间],[ba上给定n+1个插值节点bxxxan10和相应的函数值0y,1y,…,ny,求作一个插值函数)(x,具有性质①iiyx)((ni,,2,1,0)。②)(x在每个小区间内],[1iixx(ni,,2,1,0)上是线性函数。2.2.5样条插值设在区间],[ba上取n+1个节点bxxxan10给定这些点的函数值)(iixfy。若函数)(xs满足条件:①iiyxs)(,ni,,2,1,0;②在每个区间],[1iixx(ni,,2,1,0)上是3次多项式;③],[)(2baCxsi;④取下列边界条件之一:(ⅰ)第一边界条件:)()(0'0'xfxs,)()(''nnxfxs,(ⅱ)第二边界条件:)()(0''0''xfxs,)()(''''nnxfxs或0)()(''0''nxsxs(ⅲ)周期边界条件:)()(0nkkxsxs,2,1k称)(xs为3次样条插值函数。2.2.6有理插值设在区间],[ba上给定n+m+1个互异节点0x,1x,2x,……,1mnx,mnx上的函数值)(iixfy,mni,,2,1,0,构造一个有理插值mmmmnnnnmnmnbxbxbxbaxaxaxaxQxpxR11101110)()()(,满足条件:)()(iimnxfxR,mni,,2,1,0则称)(xRmn为点集{0x,1x,2x,……,1mnx,mnx}上的有理插值函数。3插值算法的编程1.Lagrange插值方法的编程以0.32,0.34,0.36为节点,分别用线性插值和抛物插值求正弦函数在0.3367处的近似值。拉格朗日插值程序清单:#includestdio.h#includeconio.hdoubleLagrange(doublex,intn,doublea[],doubleb[]);voidmain(){doublea[20],b[20],x,y;inti=0,n;printf(请输入数值个数:n=);scanf(%d,&n);printf(请输入%d个不同的x的数值:\n,n);for(i=0;in;i++){scanf(%lf,&a[i]);}printf(请按顺序输入x对应的y的数值:\n);for(i=0;in;i++){scanf(%lf,&b[i]);}/*for(i=0;in;i++){printf(%f,a[i]);}*/printf(请输入需计算的数:x=);scanf(%lf,&x);y=Lagrange(x,n,a,b);printf(根据拉格朗日插值公式计算后的数为:y=%f\n,y);}doubleLagrange(doublex,intn,doublea[],doubleb[]){doubley=0,L;inti,j;for(i=0;in;i++){L=1;for(j=0;jn;j++){if(j==i)continue;else{L=L*(x-a[j])/(a[i]-a[j]);}}y+=L*b[i];}returny;}2.Newton插值方法的编程计算实例以2.0,2.1,2.2,2.3,2.4为节点,用牛顿插值求函数xxf)(在2.51处的近似值。牛顿插值程序清单:#includestdio.h#includestdlib.h#includeiostream.hdoubleNewton(doublex,intn,doublea[],doubleb[]);doubleChashang(inta1,intb1,doublea[],doubleb[]);voidmain(){doublea[20],b[20],x,y;inti=0,n;printf(请输入数值个数:n=);scanf(%d,&n);printf(请输入%d个不同的x的数值:\n,n);for(i=0;in;i++){scanf(%lf,&a[i]);}printf(请按顺序输入x对应的y的数值:\n);for(i=0;in;i++){scanf(%lf,&b[i]);}printf(请输入需计算的数:x=);scanf(%lf,&x);y=Newton(x,n,a,b);printf(根据牛顿插值公式计算后的数为:y=%f\n,y);}doubleNewton(doublex,intn,doublea[],doubleb[]){inti;doublet=1.0,zhi=b[0],p=0.0;for(i=1;i=n;i++){t=(x-a[i-1])*t;p=Chashang(0,i,a,b)*t;zhi=zhi+p;}returnzhi;}doubleChashang(inta1,intb1,doublea[],doubleb[]){doublec;if(b1==a1+1)c=(b[b1]-b[a1])/(a[b1]-a[a1]);elsec=(Chashang(a1+1,b1,a,b)-Chashang(a1,b1-1,a,b))/(a[b1]-a[a1]);returnc;}4结论通过以上的对比分析计算,现得出以下结论:Lagrange型插值简单、迅速,适宜于对点插值快速计算;Newton型插值具有可继承性,适宜于外推计算;.Hermite型插值有比较高的连续可微性,但计算量比较大;样条型插值也具有较高的光滑性,但是需要额外的限制条件。参考文献[1]李庆扬,王能超,易大义.数值分析[M].武汉:华中科技大学出版1982.[2]吴才斌.插值方法[J].湖北大学成人教育学院学报,1999,(5)[3]徐萃薇,孙绳武.计算方法引论[M].北京:高等教育出版社.[4]孙志忠,袁慰平,闻震初.数值分析[M].南京:东南大学出版社.致谢