十个重要的算法
10 个重要的算法 C 语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,
1.拉格朗日插值多项式
,用于离散数据的拟合
1#include <stdio.h>
2 #include <conio.h>
3 #include <alloc.h>
4 float lagrange(float *x,float *y,float xx,int n) /**//*拉格朗日插值算
法*/
5 { int i,j;
6 float *a,yy=0.0; /**//*a 作为临时变量,记录拉格朗日插值多项式*/
7 a=(float *)malloc(n*sizeof(float));
8 for(i=0;i<=n-1;i++)
9 { a[i]=y[i];
10 for(j=0;j<=n-1;j++)
11 if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);
12 yy+=a[i];
13 }
14 free(a);
15 return yy;
16}
17main()
18{ int i,n;
19 float x[20],y[20],xx,yy;
20 printf("Input n:");
21 scanf("%d",&n);
22 if(n>=20) {printf("Error!The value of n must in (0,20)."); getch();re
turn 1;}
23 if(n<=0) {printf("Error! The value of n must in (0,20)."); getch(); re
turn 1;}
24 for(i=0;i<=n-1;i++)
25 { printf("x[%d]:",i);
26 scanf("%f",&x[i]);
27 }
28 printf("\n");
29 for(i=0;i<=n-1;i++)
30 { printf("y[%d]:",i);scanf("%f",&y[i]);}
31 printf("\n");