拉格朗日插值大法

Posted on 2013-02-14 00:14  SnakeHunt2012  阅读(162)  评论(0)    收藏  举报
 1 #include <stdio.h>
 2 #define MAX 1024
 3 
 4 int main()
 5 {
 6  double x, y, l, xk[MAX], yk[MAX];
 7  int j, k, n;
 8 
 9  scanf("%d", &n);
10  scanf("%lf", &x);
11  for (k = 0; k <= n; ++k)
12   scanf("%lf %lf/n", xk + k, yk + k);
13  for (k = 0; k <= n; k++) {
14   l = 1.0;
15   for (j = 0; j < k; ++j)
16    l = l * (x - xk[j]) / (xk[k] - xk[j]);
17         for (j++; j <=n; ++j)
18             l = l * (x - xk[j]) / (xk[k] - xk[j]);
19         y += (l * yk[k]);
20  }
21  printf("x = %lf\ty = %lf\n", x, y);
22  return 0;
23 }