Lagrange.c
上传用户:bjtelijie
上传日期:2010-01-01
资源大小:87k
文件大小:1k
源码类别:

数学计算

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. double LAG(int,double *,double *,double);
  5. void main()
  6. {
  7. int n;
  8. double *x,*y,t,lag;
  9. t = 0.15;
  10. n = 6;
  11. x = (double*)calloc(n,sizeof(double));
  12. if(x == NULL)
  13. {
  14. printf("内存分配失败n");
  15. exit(1);
  16. }
  17. y = (double*)calloc(n,sizeof(double));
  18. if(y == NULL)
  19. {
  20. printf("内存分配失败n");
  21. exit(1);
  22. }
  23. x[0] = 0;
  24. x[1] = 0.1;
  25. x[2] = 0.195;
  26. x[3] = 0.3;
  27. x[4] = 0.401;
  28. x[5] = 0.5;
  29. y[0] = 0.39894;
  30. y[1] = 0.39695;
  31. y[2] = 0.39142;
  32. y[3] = 0.38138;
  33. y[4] = 0.36812;
  34. y[5] = 0.35206;
  35. lag = LAG(n,x,y,t);
  36. printf("拉各朗日插值后得到的结果是:n");
  37. printf("f(%.2f)=%en",t,lag);
  38. free(x);
  39. free(y);
  40. }
  41. double LAG(n,x,y,t)
  42. int n;
  43. double *x;
  44. double *y;
  45. double t;
  46. {
  47. int i,j;
  48. double p,s;
  49. s = 0;
  50. for(i=0;i<n-1;i++)
  51. {
  52. p = 1;
  53. for(j=0;j<n-1;j++)
  54. if(i!=j)
  55. p*=(t-x[j])/(x[i]-x[j]);
  56. s+=p*y[i];
  57. }
  58. return (s);
  59. }