资源描述:
《数值分析报告lagrange差值和牛顿插值》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一一、实验名称Lagrange插值多项式和牛顿插值多项式二、实验目的与要求:实验目的:掌握Lagrange插值多项式和牛顿插值多项式的算法。实验要求:1.给出Lagrange插值和牛顿插值算法思路,2.用C语言实现算法,运行环境为MicrosoftVisualC++,3.计算误差(这里只要求给出(-5,5)内101个点的误差)。三、实验内容:1.对Lagrange插值多项式算法作编程练习和上机运算,2.对牛顿插值多项式算法作编程练习和上机运算,3.比较两种方法。算法思路:1.Lagrange算法是把多项式p写成如下形式:,其中称
2、为Lagrange基函数。计算Lagrange基函数的方法:fx=0.0;for(i=0;i<=n;i++){tmp=1.0;for(j=0;j
3、y1[0];for(k=1;k<=N;k++){d=x1[k]-x1[k-1];u=c[k-1];for(i=k-2;i>=0;i--){u=u*(x1[k]-x1[i])+c[i];d=d*(x1[k]-x1[i]);}c[k]=(y1[k]-u)/d;}3.这里,我们先编写两个函数px1和px2,分别用来计算插值节点取和Chebyshevpoint,i=0,1,…,N时的Lagrange多项式函数或牛顿多项式函数,然后在main函数中,主要目的是计算误差
4、f(x)-p(x)
5、在(-5,5)内101个点处的最大值,其中当然要引用前
6、面编写的两个函数px1和px2,最后将N=5,10,20,40时两种情况下的最大误差输出,并分析结果。四、实验题目:对函数,构造Lagrange插值多项式和牛顿插值多项式,插值节点取为,i=0,1,…,N和,i=0,1,…,N(Chebyshevpoint),并计算如下误差对N=5,10,20,40比较以上两组节点的结果。编写程序(程序见后面附录),输出结果如下:1.Lagrange插值法结果:可以看出:(1)对于该函数而言,N值越大,即插值点数越多,相对误差(大概地)越小,但是要求得严格的误差,应该取
7、f(x)-p(x)
8、在区间(
9、-5,5)上的最大值。这里认为该区间上101个点足够密集,而且f(x)-p(x)在(-5,5)上是一致连续的,所以将其看作所求误差是合理的。(2)MaxErrorofgrid(1)总是小于MaxErrorofgrid(2),而且MaxErrorofgrid(1)迅速收敛到零,然而MaxErrorofgrid(2)则很缓慢地向零靠拢,这说明该函数f(x)用(-5,5)上平均分布的N个点得到的Lagrange函数比用(-5,5)上N个Chebyshevpoint更靠近原函数f(x)。2.牛顿插值法得到的结果:可以看出:(1)单独地观察这
10、组数据,会得到和Lagrange插值法一样的结论,对于该函数而言,N值越大,即插值点数越多,相对误差(大概地)越小,MaxErrorofgrid(1)总是小于MaxErrorofgrid(2),且MaxErrorofgrid(1)更迅速地收敛到零。(2)和Lagrange插值法数据比较,我们会发现当取相同的插值点时,两种方法得到的误差结果是一样的。追究其原因知,这是多项式插值定理决定两组数据必定是相同的,多项式插值定理是这样阐述的,若是不同的实数,则对任意数值,存在唯一的次数至多是n次的多项式P(x),使得,所以两种方法算得的Lag
11、range多项式和牛顿多项式实质上是同一个函数P(x),故当然是相同的了。五、附录:实验编程,运行环境为MicrosoftVisualC++A.Lagrange插值多项式法:#include#includedoublepx1(floatw,intN)/*构造变量为w的Lagrange函数,xi=5-10i/N为插值点*/{inti,j;doublez1=0.0,x1[50],y1[50];for(i=0;i<=N;i++){x1[i]=5.0-10.0*i/N;y1[i]=1/(1+x1[i]*x1
12、[i]);}for(i=0;i<=N;i++){doubletmp=1.0;for(j=0;j