background image

32 printf("Input xx:");
33 scanf("%f",&xx);
34 yy=lagrange(x,y,xx,n);
35 printf("x=%f,y=%f\n",xx,yy);
36 getch();
37}
38

2.牛顿插值多项式,用于离散数据的拟合

 1#include <stdio.h>
 2#include <conio.h>
 3#include <alloc.h>
 4void difference(float *x,float *y,int n)
 5{ float *f;
 6 int k,i;
 7 f=(float *)malloc(n*sizeof(float));
 8 for(k=1;k<=n;k++)
 9 { f[0]=y[k];
10    for(i=0;i<k;i++)
11      f[i+1]=(f[i]-y[i])/(x[k]-x[i]);
12    y[k]=f[k];
13 }
14 return;
15}
16main()
17{ int i,n;
18 float x[20],y[20],xx,yy;
19 printf("Input n:");
20 scanf("%d",&n);
21 if(n>=20) {printf("Error! The value of n must in (0,20)."); getch(); r
eturn 1;}
22 if(n<=0) {printf("Error! The value of n must in (0,20).");getch(); ret
urn 1;}
23 for(i=0;i<=n-1;i++)
24 { printf("x[%d]:",i);
25    scanf("%f",&x[i]);
26 }
27   printf("\n");
28 for(i=0;i<=n-1;i++)
29 { printf("y[%d]:",i);scanf("%f",&y[i]);}
30 printf("\n");