Advertisement
codisinmyvines

mn

Mar 21st, 2021 (edited)
572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1. #include <iostream>
  2. #define eps 0.000001
  3. using namespace std;
  4.  
  5. double f(double t, double u)
  6. {
  7.     return 4 / (t * t) - u / t - u * u;
  8. }
  9. double df(double t, double u)
  10. {
  11.     return -1 / t - 2 * u;
  12. }
  13. double F(double t, double y, double x, double h)
  14. {
  15.     return x - y - (h / 2) * (f(t, y) + f(t + h, x));
  16. }
  17. double dF(double t, double x, double h)
  18. {
  19.     return 1 - (h / 2) * df(t + h, x);
  20. }
  21. void priblizhennoe(double t0, double U0, double h, int N)
  22. {
  23.     double y, t, x_prev, x_curr;
  24.     y = U0;
  25.     t = t0;
  26.     bool a;
  27.     cout << "При t" << 0 << " = " << t << " U" << 0 << " = " << y << "\n";
  28.     for (int i = 0; i < N; i++)
  29.     {
  30.         x_curr = 0;
  31.         x_prev = t;
  32.         a = true;
  33.         while (a)
  34.         {
  35.             x_curr = x_prev - F(t, y, x_prev, h) / dF(t, x_prev, h);
  36.             if (abs(x_curr - x_prev) < eps)
  37.                 a = false;
  38.             x_prev = x_curr;
  39.         }
  40.         t += h;
  41.         y = x_curr;
  42.         cout << "При t" << i + 1 << " = " << t << " U" << i + 1 << " = " << y << "\n";
  43.     }
  44. }
  45. void tochnoe(int N, double h, double t0, double U0)
  46. {
  47.     double t, u;
  48.     t = t0;
  49.     u = U0;
  50.     cout << "При t" << 0 << " = " << t << " U" << 0 << " = " << u << "\n";
  51.     for (int i = 0; i < N; i++)
  52.     {
  53.         t = t + h;
  54.         u = (2 * (t * t * t * t + 0.2)) / (t * (t * t * t * t - 1 / 5));
  55.         cout << "При t" << i + 1 << " = " << t << " U" << i + 1 << " = " << u << "\n";
  56.     }
  57. }
  58. int main()
  59. {
  60.     setlocale(LC_ALL, "RU");
  61.     double t0, T, U0, h;
  62.     int N;
  63.     cout << "Введите t0 и T: \n";
  64.     cin >> t0 >> T;
  65.     cout << "Введите N и U0: \n";
  66.     cin >> N >> U0;
  67.     h = (T - t0) / N;
  68.     cout << "Приближенные решения: \n";
  69.     priblizhennoe(t0, U0, h, N);
  70.     cout << "\n";
  71.     cout << "Точные решения: \n";
  72.     tochnoe(N, h, t0, U0);
  73.  
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement