Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1.  
  2. #include "pch.h"
  3. #include <iostream>
  4. #include <math.h>
  5. #include <stdio.h>
  6. #include <conio.h>
  7. const double pi = 3.1415926535897932384626433832795;
  8. double function(double x)
  9. {
  10. double y = 2 * cos((pi*x) / 4);
  11. return(y);
  12. }
  13. double fact(double z)
  14. {
  15. double s=1.0;
  16. for (int i = 1; i <= z; i++)
  17. {
  18. s *= i;
  19. }
  20. return s;
  21. }
  22. int main()
  23. {
  24. int n,i,j,i1;
  25. double a,p,h,q,a1,Nx,b1,*x,*y,x1,*dY1, *dY2, *dY3, *dY4, *dY5;
  26.  
  27. setlocale(LC_ALL, "rus");
  28.  
  29. printf("\nВведите кол-во x(всех точек): ");
  30. scanf_s("%i", &n);
  31. x = new double[n];
  32. y = new double[n];
  33. dY1 = new double[n];
  34. dY2 = new double[n];
  35. dY3 = new double[n];
  36. dY4 = new double[n];
  37. dY5 = new double[n];
  38.  
  39. printf("Введите начальную точку: ");
  40. scanf_s("%lf", &a);
  41.  
  42. printf("Введите шаг: ");
  43. scanf_s("%lf", &h);
  44. x[0] = a;
  45. for (i = 0; i < n ; i++)
  46. {
  47. x[i + 1] = x[i] + h;
  48.  
  49. }
  50. for (i = 0; i < n; i++)
  51. {
  52. printf("Введите y[%i]: ", i);
  53. scanf_s("%lf", &y[i]);
  54. }
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. printf("\n\n\nx:\n");
  63. for (i = 0; i < n; i++)
  64. {
  65. printf("%lf ", x[i]);
  66. }
  67. printf("\ny:\n");
  68. for (i = 0; i < n; i++)
  69. {
  70. printf("%lf ", y[i]);
  71. }
  72.  
  73. for (i = 0; i < n; i++) // Конечная разность первого порядка
  74. {
  75. dY1[i] = y[i + 1] - y[i];
  76. }
  77. printf("\n\nКонечная разность первого порядка:\n");
  78. for (i = 0; i < n - 1; i++)
  79. {
  80. printf("%.4lf ", dY1[i]);
  81. }
  82. for (i = 0; i < n; i++) // Конечная разность второго порядка
  83. {
  84. dY2[i] = dY1[i + 1] - dY1[i];
  85. }
  86. printf("\n\nКонечная разность второго порядка:\n");
  87. for (i = 0; i < n-2; i++)
  88. {
  89. printf("%.4lf ", dY2[i]);
  90. }
  91. for (i = 0; i < n; i++) // Конечная разность третьего порядка
  92. {
  93. dY3[i] = dY2[i + 1] - dY2[i];
  94. }
  95. printf("\n\nКонечная разность третьего порядка:\n");
  96. for (i = 0; i < n - 3; i++)
  97. {
  98. printf("%.4lf ", dY3[i]);
  99. }
  100. for (i = 0; i < n; i++) // Конечная разность четвертого порядка
  101. {
  102. dY4[i] = dY3[i + 1] - dY3[i];
  103. }
  104. printf("\n\nКонечная разность четвертого порядка:\n");
  105. for (i = 0; i < n - 4; i++)
  106. {
  107. printf("%.4lf ", dY4[i]);
  108. }
  109. for (i = 0; i < n; i++) // Конечная разность пятого порядка
  110. {
  111. dY5[i] = dY4[i + 1] - dY4[i];
  112. }
  113. printf("\n\nКонечная разность пятого порядка:\n");
  114. for (i = 0; i < n - 5; i++)
  115. {
  116. printf("%.4lf ", dY5[i]);
  117. }
  118.  
  119. printf("Введите x: ");
  120. scanf_s("%lf",&x1);
  121.  
  122. printf("Введите границы отрезка:\n");
  123. scanf_s("%lf", &a1);
  124. scanf_s("%lf", &b1);
  125. p = (double)(a1 + b1) / 2;
  126. q = (double)(x1 -a1) / h;
  127.  
  128. /*if (x1 < p)
  129. {*/
  130. for (i = 0; i < n; i++)
  131. {
  132. if (a1 == x[i])
  133. {
  134. i1 = i;
  135. }
  136. }
  137.  
  138. Nx = y[i1] + q*dY1[i1]+dY2[i1]*((q*(q-1))/2) + dY3[i1]* ((q*(q - 1)*(q-2)) / 6) + dY4[i1] * ((q*(q - 1)*(q - 2)*(q-3)) / 24);
  139.  
  140.  
  141. if (x1 > p)
  142. {
  143. for (i = 0; i < n; i++)
  144. {
  145. if (b1 == x[i])
  146. {
  147. i1 = i;
  148. }
  149. }
  150. Nx = dY1[i1] + dY2[i1] * ((q*(q + 1)) / fact(2)) + dY3[i1] * ((q*(q + 1)*(q + 2)) / fact(3)) + dY4[i1] * ((q*(q + 1)*(q + 2)*(q + 3)) / fact(4));
  151.  
  152. }
  153.  
  154. printf("\n\n\nРезультат: f(%lf)=%lf\n\n",x1,Nx);
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement