数值分析报告Lagrange差值和牛顿插值

上传人:re****.1 文档编号:472806683 上传时间:2022-12-20 格式:DOCX 页数:17 大小:39.18KB
返回 下载 相关 举报
数值分析报告Lagrange差值和牛顿插值_第1页
第1页 / 共17页
数值分析报告Lagrange差值和牛顿插值_第2页
第2页 / 共17页
数值分析报告Lagrange差值和牛顿插值_第3页
第3页 / 共17页
数值分析报告Lagrange差值和牛顿插值_第4页
第4页 / 共17页
数值分析报告Lagrange差值和牛顿插值_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《数值分析报告Lagrange差值和牛顿插值》由会员分享,可在线阅读,更多相关《数值分析报告Lagrange差值和牛顿插值(17页珍藏版)》请在金锄头文库上搜索。

1、实验、实验名称Lagra nge插值多项式和牛顿插值多项式、实验目的与要求:实验目的:掌握Lagrange插值多项式和牛顿插值多项式的算法。 实验要求:1.给出Lagrange插值和牛顿插值算法思路,2. 用C语言实现算法,运行环境为Microsoft Visual C+,3. 计算误差(这里只要求给出(-5,5 )内101个点 的误差)。三、实验内容:1. 对Lagrange插值多项式算法作编程练习和上机运算,2. 对牛顿插值多项式算法作编程练习和上机运算,3. 比较两种方法。算法思路:1. Lagrange算法是把多项式p写成如下形式:P(x) y l (x)y1(x)+yn(x)n,x

2、xxXj称为Lagrange基函数。li(x)j 其中j o j i计算Lagrange基函数的方法:fx=0.0;for(i=0;i二 n ;i+)tmp=1.0;for(j=0;ji;j+)tmp 二 tmp*(x-xj)/(xi-xj);for(j=i+1;j n ;j+)tmp=tmp*(x-xj)/(xi-xj);fx=fx+tmp*yi;return(fx);2.牛顿算法是把多项式p写成如下形式:p(x) C q(x X)+Cm(x x )(x N)(x xj 苴中o o ox , xl, xC ,Cl, , Ci0,xl, n是插值点,0,C丄,1是待定系数。可以通过插值点Xo,

3、 Xi,Xn和插值点处的函数值y。,C算出待定系数, C ,01Cn 1,方法如下:(1)并利用Pk(xQ CkPk1(Xk)ykx0)+Cki(Xkq(XkC0q(XkX0)+Ck2(XkXPk(xQ,得X)区 )(Xk X/Xk-J 将(1)-Fk(X= 0 ; i -)u=u*(x1k 卜 x1i)+ci;d=d*(x1k -x1i);ck=(y1k-u)/d;3.这里,我们先编写两个函数pxl和px2,分别用来计算插值2i 1)2N 210.节点取 X 5 二1 和 Chebyshev point K 5cos(NJi=0,1,,N时的Lagrange多项式函数或牛顿多项式函数,然后在

4、main 函数中,主要目的是计算误差|f(x) - p(x)|在(-5,5)内101个点处的最 大值,其中当然要引用前面编写的两个函数px1和px2,最后将N=5,10,20,40时两种情况下的最大误差输出,并分析结果。四、实验题目:对函数f (x)x 5,5,构造Lagrange插值多1 x项式和牛顿插值多项式2i5cos(插值节点取为x 5 10i, i=o,i,,1并计算如下误差),i=0,1, ,N(Chebyshev point)0円醐 f (yj p(yi)|,比5,对 n=5,io,2o,4o 比较以上两组节点的结果。编写程序(程序见后面附录),输出结果如下:1丄agra nge

5、插值法结果:plese input number N : 5H5Max Error of grid 1):0. 136990452439piese inpii M=10Max Ewor of gpid 2) :0. 555911330507 Press 日 ny key to cuntinueMax Error of grid : 0600000000000 lax Error of grid 0. 643788475983 Press anv to contipueaplese input the numher NN=20Max Error of s(rid Cl:0.00000000000

6、0 Max Eipror of gpid C2 ;0. 0059298U&863 Press any key to continueaplese input the number N :40H=40Max Error of grid : 0. 00000R000000 Max Ervor of arid :0. 0S9L11465060 Press any key tu continue可以看出:(1)对于该函数而言,N值越大,即插值点数越多,相对误差(大概地)越小,但是要求得严格的误差,应该取 |f(x)-p x)|在区间(-5,5)上的最大值。这里认为该区间上101个点足够密集,而且f (

7、x) - p(X)在(-5,5)上是一致连续的,所以将其看作所 求误差是合理的。(2)Max Error of grid ( 1)总是小于 Max Error of grid (2),而 且 Max Error of grid( 1)迅速收敛到零,然而 Max Error of grid(2)则很缓慢地向零靠拢,这说明该函数f (乂)用(-5,5)上 平 均分布的N个点得到的Lagrange函数比用(-5,5)上N个 Chebyshev point 更靠近原函数 f (x)。2.牛顿插值法得到的结果:plese input 七片乜 nunber h : 5牛顿插值法,H=5Max Error

8、of yvid6.106900452489Max Eror of 妙迫 :0. 555911330507 Pi*ess any key to cantinueplese input the ntimber N : 10牛顿插值法.N=10ax Error of gfrid : 000600600000A wc Emr of grid 0 M37SV475983Press any key to continueplese input the nunher N z 20牛顿插箱法:H=26Max Error of arid Cl: 0.900006660000 Max Errot* of grid

9、 C2 :0. 905929868882 Pves-s any key to continue piese input 七 Tie nunber N : 40 牛顿插值法;N=46Max Frror of 盯;d Cl: 6/01052768471 Max Error of grid C2 :0. 003165003195 Press anv k 号 y to continue可以看出:(1) 单独地观察这组数据,会得到和Lagrange插值法一样的结论,对于该函数而言,N值越大,即插值点数越多,相对误 差(大概地)越小,Max Error of grid ( 1)总是小于 Max Error

10、 ofgrid (2),且Max Error of grid ( 1)更迅速地收敛到零。(2)和Lagrange插值法数据比较,我们会发现当取相同的 插值点时,两种方法得到的误差结果是一样的。追究其原因知, 这是多项式插值定理决定两组数据必定是相同的, 多项式插值定X X X数值yo,理是这样阐述的,若0,1,n是不同的实数,则对任意n,存在唯一的次数至多是n次的多项式P(X )y ,(0 i n)P (X),使得Pni ,所以两种方法算得Lagrange多项式和牛顿多项式实质上是同一个函数P (x),故 max* f(yi)p(yi)|, yi 10 5 当然是相同的了。五、附录:实验编程,

11、运行环境为Microsoft Visual C+A. Lagrange插值多项式法:#include#includedouble px1(float w,i nt N)/*构造变量为w的Lagrange函数,xi=5T0i/N为插值点*/ int i,j;double z1=0.0,x150,y150;for(i=0;i=N;i+) x1i=5.0-10.0*i/N; y1i=1/(1+x1i*x1i);for(i=0;i=N;i+)double tmp=1.0;for(j=0;ji;j+) tmp=tmp*(w-x1j)/(x1i-x1j); for(j=i+1;j=N;j+)tmp=tmp

12、*(w-x1j)/(x1i-x1j); z1=z1+tmp*y1i;return(z1);double px2(float w,int N)/* 构造变量为 w 的 Lagrange 函数,Chebyshev point*/ int i,j;double z2=0.0,x250,y250;for(i=0;i=N;i+) x2i=-5.0*cos(2*i+1)*3.1415926/(2*N+2);y2i=1/(1+x2i*x2i);for(i=0;i=N;i+)double tmp=1.0;for(j=0;ji;j+) tmp=tmp*(w-x2j)/(x2i-x2j);for(j=i+1;j=

13、N;j+)return(z2);void main()/*计算-5至 5中 101个点上的最大误差 fmax*/ int k,N;double m1101,m2101,z101,fmax1=0.0,fmax2=0.0;/*z101为101个点,m101为相应差值*/ printf(plese input the number N :);scanf(%d,&N);printf(N=%dn,N);for(k=0;k=100;k+) zk=k/10-5;m1k=fabs(1/(1+zk*zk)-px1(zk,N); m2k=fabs(1/(1+zk*zk)-px2(zk,N);fmax1=m10; for(k=1;km1k-1)fmax1=m1k;fmax2=m20;printf(Max Error of grid (1): %6.12fn,fmax1); for(k=1;km2k-1)fmax2=m2k;printf(Max Error of grid (2): %6.12fn,fmax2);B .牛顿插值多项式法:#includestdio

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号