Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. #include <math.h>
  2. #include "main.h"
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include "metod_03.h"
  6.  
  7. int k = 1;
  8. double *d = NULL;
  9. double *dop = NULL;
  10.  
  11. void Coeff_01(int n, double *x, double *f_x, double *c);
  12. double Value_01(double t, int n, double *c, double *x);
  13.  
  14. void Coeff_01(int n, double *x, double *f_x, double *c)
  15. {
  16. int i, j;
  17.  
  18. for (i = 0; i < n; i++) {
  19. c[i] = f_x[i];
  20. dop[i] = f_x[i];
  21. }
  22.  
  23. for (i = 1; i < n; i++)
  24. for (j = n - 1; j > i - 1; j--)
  25. c[j] = (c[j] - c[j - 1]) / (x[j] - x[j - i]);
  26. }
  27.  
  28. double Value_01(double t, int n, double *c, double *x)
  29. {
  30. int i;
  31. double fx;
  32.  
  33. fx = c[n - 1];
  34.  
  35. for (i = n - 2; i >= 0; i--)
  36. {
  37. fx *= (t - x[i]);
  38. fx += c[i];
  39. }
  40.  
  41. return fx;
  42. }
  43.  
  44. void Coeff_03(int n, double *x, double *f_x, double *c);
  45. void Coeff_03(int n, double *x, double *f_x, double *c){
  46. d = (double*)malloc((k + 1) * sizeof(double));
  47. dop = (double*)malloc(n * sizeof(double));
  48. Coeff_01(n, x, f_x, c);
  49. }
  50.  
  51. double Value(double t, int n, double *c, double *x, int m);
  52. double Value(double t, int n, double *c, double *x, int m) {
  53. double fx;
  54. int i;
  55. int l = 1;
  56. fx = c[n - 1];
  57. for (i = n - 2; i >= m; i--)
  58. {
  59. fx *= (t - x[i - m]);
  60. fx += c[i];
  61. }
  62.  
  63. for (i = 2; i <= m; i++) {
  64. l = l * i;
  65. }
  66.  
  67. return l * fx;
  68. }
  69.  
  70. double Value_03(double t, int n, double *c, double *x);
  71. double Value_03(double t, int n, double *c, double *x)
  72. {
  73. int i, j, m;
  74. d[0] = Value_01(t, n, c, x);
  75.  
  76.  
  77. c[0] = d[0];
  78. for (i = 1; i < n; i++) {
  79. c[i] = dop[i - 1];
  80. }
  81.  
  82. for (i = 1; i < n; i++)
  83. for (j = n - 1; j > i - 1; j--) {
  84. if (fabs(x[j] - t) < 1e-3) {
  85. printf("%lf\n", x[j] - t);
  86. return t;
  87. }
  88. else {
  89. c[j] = (c[j] - c[j - 1]) / (1e5 * (x[j] - t));
  90. }
  91. }
  92.  
  93. d[1] = Value(t, n, c, x, 1);
  94.  
  95. for (m = 2; m <= k; m++) {
  96.  
  97. for (j = m; j < n; j++) {
  98. if (j == m) {
  99. c[j] = (c[j - 1] - d[j - 1]) / (x[j] - t);
  100. c[j - 1] = d[j - 1];
  101. } else {
  102. c[j] = (c[j] - c[j - 1]) / (x[j] - t);
  103. }
  104. }
  105. d[m] = Value(t, n, c, x, m);
  106. }
  107. return d[0];
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement