Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. double NFORWARD(double);
  8. double NBACKWARD(double);
  9. double STIRLING(double);
  10.  
  11. double X[11];
  12. double Y[11];
  13.  
  14. int main() {
  15. ofstream fout;
  16. fout.open("outFile.txt", ios::app);
  17. SetConsoleOutputCP(CP_UTF8);
  18. int i;
  19. double x1, x2, x3;
  20. ifstream input("input.txt");
  21. for (i = 0; i < 11; i++) {
  22. input >> X[i];
  23. input >> Y[i];
  24. }
  25. input >> x1 >> x2 >> x3;
  26. input.close();
  27. cout << "x1 = " << x1 << " NFOR | NBACK | STIR" << endl;
  28. cout << NFORWARD(x1) << " | " << NBACKWARD(x1) << " | " << STIRLING(x1) << endl;
  29. cout << "x2 = " << x2 << " NFOR | NBACK | STIR" << endl;
  30. cout << NFORWARD(x2) << " | " << NBACKWARD(x2) << " | " << STIRLING(x2) << endl;
  31. cout << "x3 = " << x3 << " NFOR | NBACK | STIR" << endl;
  32. cout << NFORWARD(x3) << " | " << NBACKWARD(x3) << " | " << STIRLING(x3) << endl;
  33. return 0;
  34. }
  35.  
  36. double NFORWARD(double x) {
  37. double a;
  38. double h, q;
  39. double delta[11][11];
  40. int i, j;
  41. double NEWTON;
  42. h = X[1] - X[0];
  43. q = (x - X[0]) / h;
  44. for (i = 0; i < 11; i++) {
  45. delta[i][0] = Y[i];
  46. }
  47. for (j = 1; j < 11; j++) {
  48. for (i = 0; i < 11 - j; i++)
  49. delta[i][j] = delta[i + 1][j - 1] - delta[i][j - 1];
  50. }
  51. NEWTON = 0;
  52. for (i = 0; i < 11; i++) {
  53. a = 1;
  54. for (j = 0; j < i; j++) {
  55. a = a * (q - j) / (j + 1);
  56. }
  57. NEWTON = NEWTON + delta[0][i] * a;
  58. }
  59. return NEWTON;
  60. }
  61.  
  62. double NBACKWARD(double x) {
  63. double a;
  64. double h, q;
  65. double delta[11][11];
  66. int i, j;
  67. double NEWTON;
  68. h = X[10] - X[9];
  69. q = (x - X[10]) / h;
  70. for (i = 0; i < 11; i++)
  71. delta[i][0] = Y[10 - i];
  72. for (j = 1; j < 11; j++) {
  73. for (i = 0; i < 11 - j; i++)
  74. delta[i][j] = delta[i][j - 1] - delta[i + 1][j - 1];
  75. }
  76. NEWTON = 0;
  77. for (i = 0; i < 11; i++) {
  78. a = 1;
  79. for (j = 0; j < i; j++) {
  80. a = a * (q + j) / (j + 1);
  81. }
  82. NEWTON = NEWTON + delta[0][i] * a;
  83. }
  84. return NEWTON;
  85. }
  86.  
  87. double STIRLING(double x) {
  88. double a, STIR;
  89. int n = 5;
  90. double h, q;
  91. double delta[11][11];
  92. int i, j;
  93. for (i = 0; i < 11; i++)
  94. delta[i][0] = Y[i];
  95.  
  96. for (j = 1; j < 11; j++) {
  97. for (i = 0; i < 11 - j; i++)
  98. delta[i][j] = delta[i + 1][j - 1] - delta[i][j - 1];
  99. }
  100. h = X[1] - X[0];
  101. q = (x - X[n]) / h;
  102. double kvadr;
  103. double fakt;
  104. STIR = delta[n][0];
  105. int par1 = 0, par2 = 1;
  106. for (i = 1; i < 11; i++) {
  107. if (i % 2 == 1) {
  108. fakt = 1;
  109. kvadr = 1;
  110. a = q;
  111. for (j = 1; j < i; j++)
  112. fakt = fakt * (j + 1);
  113. for (j = 1; j <= i / 2; j++)
  114. kvadr = kvadr * (q - j) * (q + j);
  115. a = a * kvadr / fakt;
  116. STIR = STIR + (delta[n - par1][i] + delta[n - par1 - 1][i]) * a / 2;
  117. par1++;
  118. } else {
  119. fakt = 1;
  120. kvadr = 1;
  121. a = 1;
  122. for (j = 1; j < i; j++)
  123. fakt = fakt * (j + 1);
  124. for (j = 0; j < i / 2; j++)
  125. kvadr = kvadr * (q - j) * (q + j);
  126. a = a * kvadr / fakt;
  127. STIR = STIR + delta[n - par2][i] * a;
  128. par2++;
  129. }
  130. }
  131. return STIR;
  132. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement