《数值分析课程设计多项式插值的振荡现象.doc》由会员分享,可在线阅读,更多相关《数值分析课程设计多项式插值的振荡现象.doc(17页珍藏版)》请在三一办公上搜索。
1、数值分析 课程设计多项式插值的振荡现象林思辉200630760209指导教师 李娇娇 讲师学院名称理 学 院专 业 名 称信息与计算科学提交日期2008年5月一、 问题的提出考虑在一个固定区间上用插值逼近一个函数。显然,Lagrange插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式增加时,Ln(x)是否也更加靠近被逼近的函数。龙格(Runge)给出的一个例子是极著名并富有启发性的。设区间-1,1上的函数二、 实验内容考虑区间-1,1的一个等距划分,节点为则拉格朗日插值多项式为其中的ai(x),i=0,1,2,n是n次Lagrange插值基函数。三、 实验结果及分析当节点为
2、 ,n=2,最大误差 L=0.646227分点数 n=3,最大误差 L=0.707014分点数 n=4,最大误差 L=0.438353分点数 n=5,最大误差 L=0.432692分点数 n=6,最大误差 L=0.616920分点数 n=7,最大误差 L=0.247359分点数 n=8,最大误差 L=1.045174分点数 n=9,最大误差 L=0.300281分点数 n=10,最大误差 L=1.915643分点数 n=11,最大误差 L=0.556736分点数 n=12,最大误差 L=3.662997再选一定义在区间-5,5上的函数, 重复上面的实验。结果为切比雪夫函数:考虑区间-1,1上的
3、函数节点为分点数 n=2, 最大误差 L=0.600595分点数 n=3, 最大误差 L=0.750300分点数 n=4, 最大误差 L=0.402018分点数 n=5, 最大误差 L=0.555911分点数 n=6, 最大误差 L=0.264228分点数 n=7, 最大误差 L=0.391740分点数 n=8, 最大误差 L=0.170835分点数 n=9, 最大误差 L=0.269178分点数 n=10, 最大误差 L=0.109148分点数 n=11, 最大误差 L=0.182758分点数 n=12, 最大误差 L=0.069217误差分析:1) 结果分析:普通的Lagrange插值与切
4、比雪夫函数式中使用的节点越多,插值函数与原函数越逼近,因此结果有效。2) 误差分析:本题是以Lagrange插值的振荡现象为代表来考察多项式的振荡现象,其误差是在插值过程中原函数值与插值函数值的差造成的。四、 关于本设计的体会程序比较简单易明,执行效率较高,但程序只能这对单一的插值公式,使用JAVA来解题,对画图造成影响,使画图难度加大,若使用MATLAB会跟方便解题。五、 参考文献JAVA程序设计教程、数值分析六、 附录(1)、程序代码:import java.util.Scanner;class SFpublic static void main(String args) int MAX=
5、 2000; double a=new doubleMAX;double b=new doubleMAX; double c=new doubleMAX;double d=new doubleMAX; double t=new doubleMAX;double q=new doubleMAX; double m=new doubleMAX; double f,p,y; int i,j,r,n,g,v; Scanner scan =new Scanner(System.in); System.out.println(1-f(x)n+2-h(x)n+3-切比雪夫); System.out.prin
6、tf(输入v:); v=scan.nextInt(); System.out.printf(输入n:); n=scan.nextInt(); if(v=1) for(g=2;g=n;g+) /g为公式中的n for(r=0;r=1000;r+) tr=-1+2*(double)r/1000 ; /将X在区间内分成1000份 qr=1/(1+25*tr*tr);/qr为该点真实函数值 for(i=0;i=g;i+) ai=-1+(2*(double)i/g); /ai即xi for(j=0;j=g;j+) bj=1.0; for(i=0;i=g;i+) if(i!=j)bj=bj*(tr-ai)
7、/(aj-ai); /bi为公式里ai y=0.0; for(j=0;jmg) mg=dr; /得出误差的最大值 System.out.printf(n = %dn,g); System.out.printf(m = %fn,mg); if(v=2) for(g=2;g=n;g+) for(r=0;r=1000;r+) tr=-5+10*(double)r/1000 ; for(i=0;i=g;i+) ai=-5+(10*(double)i/g); qr=tr/(1+tr*tr*tr*tr); for(j=0;j=g;j+) bj=1.0; for(i=0;i=g;i+) if(i!=j)bj
8、=bj*(tr-ai)/(aj-ai); y=0.0; for(j=0;jmg) mg=dr; System.out.printf(n = %dtt,g); System.out.printf(m = %ftt,mg); if(v=3) for(g=2;g=n;g+) for(r=0;r=1000;r+) tr=-1+2*(double)r/1000 ; qr=1/(1+25*tr*tr); for(i=0;i=g;i+) ai=Math.cos(double)(2*i+1)*3.14159/(2*g+2); for(j=0;j=g;j+) bj=1.0; for(i=0;i=g;i+) if
9、(i!=j)bj=bj*(tr-ai)/(aj-ai); y=0.0; for(j=0;jmg) mg=dr; System.out.printf(n = %dn,g); System.out.printf(m = %fn,mg); (2)、计算机型号:(3)、程序运行时间太快,难以测量。(4)、算法步骤:1、选择Lagrange插值的插值函数,即程序中v的值;2、若v=1,插值函数节点为 ,输入分点数n,运行程序,输出结果;若v=2,节点为Xi=-5+2i/n,i=0,1,2,.,n ,输入分点数 n,运行程序,输出结果;若v=3,插值函数为切比雪夫定义式,输入分点数 n,运行程序,输出结果;(5)、变量说明:g为公式中的n,qr为该点真实函数值,ai即xi,y为n=2公式得出的函数值,dr为1000个节点的误差,n为节点分点数,y为插值过程中的函数值。七、 教师评价