Advertisement
Dambosin

adfada

May 13th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <iomanip>
  4. #include <math.h>
  5. using namespace std;
  6.  
  7. double func(double x) {
  8. return exp(x)/pow(x,3) - pow(sin(x), 3);
  9. }
  10.  
  11. double Gaus(double a, double b, int n) {//с методы, единственное что тут норм описанно
  12. double h = (b - a) / n;
  13. double x0 = a + h / 2.;
  14. double x1 = x0 - (h / 2.)*0.5773502692;
  15. double x2 = x0 + (h / 2.)*0.5773502692;
  16. long double ans = 0;
  17. for (int i = 0; i < n; i++) {
  18. ans += (func(x1) + func(x2));
  19. x0 += h;
  20. x1 = x0 - (h / 2.)*0.5773502692;
  21. x2 = x0 + (h / 2.)*0.5773502692;
  22. }
  23. return ans * h / 2.;
  24. }
  25. int main(void)
  26. {
  27. setlocale(LC_ALL, "Russian");
  28. cout << "a=";
  29. double a;
  30. cin >> a;
  31. cout << "b=";
  32. double b;
  33. cin >> b;
  34. double x[20];
  35. double y[20];
  36. double h = (b - a) / 10.;
  37. int k = (b - a) / h;
  38. for (int i = 0; i <= k + 1; i++)
  39. {
  40. x[i] = a + i * h;
  41. y[i] = func(x[i]);
  42. }
  43. double dy[20];
  44. dy[0] = (4 * y[1] - y[2] - 3 * y[0]) / (2 * h);//первое приближенное значение произвоодной
  45. dy[k] = (4 * y[k - 1] - y[k - 2] - 3 * y[k]) / (2 * h);//последнее прибл. значение произвоодной
  46. for (int i = 1; i < k; i++) dy[i] = (y[i + 1] - y[i - 1]) / (2 * h);//остальные прибл. значения
  47. double Dy[20];
  48. for (int i = 0; i <= k; i++)Dy[i] = -3*pow(sin(x[i]),2)*cos(x[i])+(exp(x[i])/pow(x[i],3))-3 * (exp(x[i]) / pow(x[i], 4));//прямые значения производной
  49. double d2y[20];
  50. d2y[0] = (y[0] - 2 * y[1] + y[2]) / pow(h, 2);//первое приближенное значение второй произвоодной
  51. d2y[k] = (y[k - 2] - 2 * y[k - 1] + y[k]) / pow(h, 2);//последнее прибл. значение второй произвоодной
  52. for (int i = 1; i < k; i++)d2y[i] = (y[i - 1] - 2 * y[i] + y[i + 1]);//остальные прибл. второй значения
  53. double D2y[20];
  54. for (int i = 0; i <= k; i++)D2y[i] = 3*pow(sin(x[i]),3) - 6*sin(x[i])*pow(cos(x[i]),2)+ (exp(x[i]) / pow(x[i], 3))+ 6* (exp(x[i]) / pow(x[i], 4))+ 12*(exp(x[i]) / pow(x[i], 5));//прямые значения второй производной
  55. cout << setw(5) << "X" << setw(10) << "Y" << setw(10) << "dY" << setw(10) << "DY" << setw(10) << "d2Y" << setw(10) << "D2Y" << endl;
  56. for (int i = 0; i <= k; i++)
  57. cout << setw(5) << x[i] << setw(10) << y[i] << setw(10) << dy[i] << setw(10) << Dy[i] << setw(10) << d2y[i] << setw(10) << D2y[i] << endl;
  58. cout << Gaus(a, b, k);
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement