Advertisement
codisinmyvines

konuhovsosat

Jun 1st, 2021
919
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.76 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. double Mu(double t)
  7. {
  8.     //return 1 - exp(-t / 10);
  9.     return (1 - exp(-t / 10)) * abs(cos(t));
  10. }
  11. double Uo(double x, double XL)
  12. {
  13.     //return x * sqrt(abs(sin(x))) / XL;
  14.     return x * x * abs(cos(x - 1)) / (XL * XL);
  15. }
  16. int main()
  17. {
  18.     double amax, a, Ht, B, Hx, gm, X_L, t;
  19.     int Nx, nn;
  20.     Nx = 100;
  21.     X_L = 10;
  22.     Hx = X_L / Nx;
  23.     a = 1;
  24.     B = 1;
  25.     Ht = B * Hx / a;
  26.     gm = a * Ht / Hx;
  27.     int i;
  28.     double* x = new double[Nx + 1];
  29.     for (i = 0; i < Nx + 1; i++)
  30.         x[i] = i * Hx;
  31.     double* Uj = new double[Nx + 1];
  32.     double* Uj1 = new double[Nx + 1];
  33.     //t = 0;
  34.     /*Ввести t*/
  35.     for (i = 0; i < Nx + 1; i++)
  36.         Uj[i] = Uo(x[i], X_L);
  37.     double* Uex = new double[Nx + 1];
  38.     //a(x,t)
  39.     //ofstream aaa("aaa.txt");
  40.     /*
  41.     t = 0;
  42.     while (t <= 5)
  43.     {  
  44.         amax = sin(t / 4.5 - x[0] / 2);
  45.         for (i = 1; i < Nx + 1; i++)
  46.         {
  47.             a = sin(t / 4.5 - x[i] / 2);
  48.             if (abs(a) > amax)
  49.                 amax = abs(a);
  50.         }
  51.         if (amax != 0)
  52.             Ht = B * Hx / amax; //есчо убрать B
  53.         else
  54.             Ht = B * Hx; //есчо убрать B
  55.         Ht = B * Hx;
  56.         Uj1[0] = Mu(t);
  57.         for (i = 0; i < Nx + 1; i++)
  58.         {
  59.             a = sin(t / 4.5 - x[i] / 2);
  60.             gm = a * Ht / Hx;
  61.             nn = 1;
  62.             if (i == 0)
  63.                 nn = 0;
  64.             if (i == Nx)
  65.                 nn = 2;
  66.             switch (nn)
  67.             {
  68.             case 0:
  69.                 if (gm < 0)
  70.                     Uj1[i] = (1 + gm) * Uj[i] - gm * Uj[i + 1];
  71.                 break;
  72.             case 1:
  73.                 if (gm >= 0)
  74.                     Uj1[i] = (1 - gm) * Uj[i] + gm * Uj[i - 1];
  75.                 else
  76.                     Uj1[i] = (1 + gm) * Uj[i] - gm * Uj[i + 1];
  77.                 break;
  78.             case 2:
  79.                 if (gm > 0)
  80.                     Uj1[i] = (1 - gm) * Uj[i] + gm * Uj[i - 1];
  81.                 else
  82.                     Uj1[i] = Uj[i];
  83.                 break;
  84.             }
  85.         }
  86.         for (i = 0; i < Nx + 1; i++)
  87.             Uj[i] = Uj1[i];
  88.         t += Ht;
  89.     }
  90.     */
  91.     /*
  92.     cout << t;
  93.     t = 20;
  94.     for (i = 0; i < Nx + 1; i++)
  95.     {
  96.         a = sin(t / 4.5 - x[i] / 2);
  97.         aaa << a << "\n";
  98.     }
  99.     aaa.close();
  100.     */
  101.     //точное решение для а>0
  102.     //t = 5;
  103.     t = 15;
  104.     for (i = 0; i < Nx + 1; i++)
  105.     {
  106.         if (x[i] >= a * t)
  107.             Uex[i] = Uo(x[i] - a * t, X_L);
  108.         else
  109.             Uex[i] = Mu(t - x[i] / a);
  110.     }
  111.     //точное решение для a<0
  112.     /*
  113.     t = 5;
  114.     for (i = 0; i < Nx + 1; i++)
  115.     {
  116.         if (X_L - x[i] >= abs(a) * t)
  117.             Uex[i] = Uo(X_L - x[i] - abs(a) * t, X_L);
  118.         else
  119.             Uex[i] = Mu(t - (X_L - x[i]) / abs(a));
  120.     }
  121.     */
  122.     //приближенное решение для a>0
  123.     t = 0;
  124.     while (t <= 5)
  125.     {
  126.         Uj1[0] = Mu(t);
  127.         for (i = 1; i < Nx + 1; i++)
  128.             Uj1[i] = (1 - gm) * Uj[i] + gm * Uj[i - 1];
  129.         for (i = 0; i < Nx + 1; i++)
  130.             Uj[i] = Uj1[i];
  131.         t += Ht;
  132.     }
  133.     //приблеженное решение для a<0
  134.     /*
  135.     t = 5;
  136.     while (t >= 0)
  137.     {
  138.         Uj1[Nx] = Mu(t);
  139.         for (i = Nx; i >=0; i--)
  140.         {
  141.             Uj1[i] = (1 + gm) * Uj[i] - gm * Uj[i + 1];
  142.         }
  143.         for (i = 0; i < Nx + 1; i++)
  144.             Uj[i] = Uj1[i];
  145.         t = t + Ht;
  146.     }
  147.     */
  148.     ofstream xxx("xxx.txt"), toch("tochresh.txt"), prib("priblresh.txt");
  149.     for (i = 0; i < Nx + 1; i++)
  150.     {
  151.         xxx << x[i] << "\n";
  152.         toch << Uex[i] << "\n";
  153.         prib << Uj[i] << "\n";
  154.     }
  155.     xxx.close();
  156.     toch.close();
  157.     prib.close();
  158.     ifstream xxx1("xxx.txt"), prib1("priblresh.txt"), toch1("tochresh.txt");
  159.     ofstream xxxex("xxxex.txt"), pribreshex("priblreshex.txt"), tochex("tochreshex.txt");
  160.     string s;
  161.     while (xxx1.peek() != EOF)
  162.     {
  163.         xxx1 >> s;
  164.         for (i = 0; i < s.length(); i++)
  165.             if (s[i] == '.')
  166.                 s[i] = ',';
  167.         xxxex << s << "\n";
  168.         /*
  169.         prib1 >> s;
  170.         for (i = 0; i < s.length(); i++)
  171.             if (s[i] == '.')
  172.                 s[i] = ',';
  173.         pribreshex << s << "\n";
  174.         */
  175.         toch1 >> s;
  176.         for (i = 0; i < s.length(); i++)
  177.             if (s[i] == '.')
  178.                 s[i] = ',';
  179.         tochex << s << "\n";
  180.     }
  181.     xxx1.close();
  182.     toch1.close();
  183.     prib1.close();
  184.     xxxex.close();
  185.     tochex.close();
  186.     pribreshex.close();
  187.     delete[]x;
  188.     delete[]Uex;
  189.     delete[]Uj;
  190.     delete[]Uj1;
  191.     return 0;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement