background image

 十个重要的算法

    

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");