资源描述:
《数值分析 实验三Newton插值多项式.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数学与软件科学学院实验报告学期:至第学期年月日课程名称:___计算机数值方法_专业:信心与计算科学08级6班实验编号:3实验项目Newton插值多项式指导教师__张莉_姓名:田文晓学号:2008060632实验成绩:一、实验目的及要求实验目的:掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。实验要求:1.给出Newton插值算法2.用C语言实现算法二、实验内容1.用下列插值节点数据,构造Newton插值多项式,并计算N2(0.9),N3(0.9)的值。x
2、-2012f(x)171219要求:所需数据都从键盘读入,最后输出结果.2.用下列插值节点数据,构造一个三次Newton插值多项式,并计算f(1.2)的值。x-1.002.003.004.00f(x)3.005.007.005.00三、实验步骤(该部分不够填写.请填写附页)步骤1:算法描述:输入n值,及(x_i,y_i),i=0,1,2,…n;记f(x_i)=y_i;Fori=0,1,2…n计算差商f[x0,x1,x2,…x_k]=(f[x1,x2,…x_k]-f[x0,x1,x_k-1])/(x_k-x0)其中f
3、[x_i]=f(x_i);对给定的x,由N_n(x)=f(x0)+(x-x0)f[x0,x1]+(x-x0)(x-x1)f[x0,x1.x2]+...(x-x0)(x-x1)(x-x2)...(x-x_n-1)f[x0,x1,...x_n]计算出N_n(x)的值输出N_n(x)的值步骤2:程序代码如下:#include#defineMAX_N30typedefstructtagPOINT/*thestructerofpoint*/{doublex;doubley;}POINT;intmain(){
4、intn,i,j;POINTpoints[MAX_N+1];doubletmp,newton=0;doublediff[MAX_N+1];doublex;clrscr();printf("Inputnvalue:");/*thenumberofthepointsinserted*/scanf("%d",&n);if(n>MAX_N){printf("TheinputnislargerthanMAX_N,pleaseredefinetheMAX_N.");return1;}if(n<=0){printf("P
5、leaseinputanumberbetween1and%d.",MAX_N);return1;}printf("Nowinputthe(x_i,y_i),i=0,...%d:",n);for(i=0;i<=n;i++)scanf("%lf%lf",&points[i].x,&points[i].y);printf("Nowinputthexvalue:");/*thevalueofx*/scanf("%lf",&x);for(i=0;i<=n;i++)diff[i]=points[i].y;for(i=0
6、;ii;j--){diff[j]=(diff[j]-diff[j-1])/(points[j].x-points[j-1-i].x);}}tmp=1;newton=diff[0];for(i=0;i7、putnvalue:2Nowinputthe(x_i,y_i),i=0,...2:0112219Nowinputthexvalue:0.9newton(0.900000)=1.180000当输入x=0.9时,利用牛顿三次插值得到结果如下:Inputnvalue:3Nowinputthe(x_i,y_i),i=0,...3:-2170121912Nowinputthexvalue:0.9newton(0.900000)=1.303750输入当x=1.2时,得到结果如下:Inputnvalue:3Nowinputthe
8、(x_i,y_i),i=0,...3:-1.003.002.005.003.007.004.005.00Nowinputthexvalue:1.2newton(1.200000)=2.401600注:实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格