Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- #include <string>
- using namespace std;
- double Mu(double t)
- {
- //return 1 - exp(-t / 10);
- return (1 - exp(-t / 10)) * abs(cos(t));
- }
- double Uo(double x, double XL)
- {
- //return x * sqrt(abs(sin(x))) / XL;
- return x * x * abs(cos(x - 1)) / (XL * XL);
- }
- int main()
- {
- double amax, a, Ht, B, Hx, gm, X_L, t;
- int Nx, nn;
- Nx = 100;
- X_L = 10;
- Hx = X_L / Nx;
- a = 1;
- B = 1;
- Ht = B * Hx / a;
- gm = a * Ht / Hx;
- int i;
- double* x = new double[Nx + 1];
- for (i = 0; i < Nx + 1; i++)
- x[i] = i * Hx;
- double* Uj = new double[Nx + 1];
- double* Uj1 = new double[Nx + 1];
- //t = 0;
- /*Ввести t*/
- for (i = 0; i < Nx + 1; i++)
- Uj[i] = Uo(x[i], X_L);
- double* Uex = new double[Nx + 1];
- //a(x,t)
- //ofstream aaa("aaa.txt");
- /*
- t = 0;
- while (t <= 5)
- {
- amax = sin(t / 4.5 - x[0] / 2);
- for (i = 1; i < Nx + 1; i++)
- {
- a = sin(t / 4.5 - x[i] / 2);
- if (abs(a) > amax)
- amax = abs(a);
- }
- if (amax != 0)
- Ht = B * Hx / amax; //есчо убрать B
- else
- Ht = B * Hx; //есчо убрать B
- Ht = B * Hx;
- Uj1[0] = Mu(t);
- for (i = 0; i < Nx + 1; i++)
- {
- a = sin(t / 4.5 - x[i] / 2);
- gm = a * Ht / Hx;
- nn = 1;
- if (i == 0)
- nn = 0;
- if (i == Nx)
- nn = 2;
- switch (nn)
- {
- case 0:
- if (gm < 0)
- Uj1[i] = (1 + gm) * Uj[i] - gm * Uj[i + 1];
- break;
- case 1:
- if (gm >= 0)
- Uj1[i] = (1 - gm) * Uj[i] + gm * Uj[i - 1];
- else
- Uj1[i] = (1 + gm) * Uj[i] - gm * Uj[i + 1];
- break;
- case 2:
- if (gm > 0)
- Uj1[i] = (1 - gm) * Uj[i] + gm * Uj[i - 1];
- else
- Uj1[i] = Uj[i];
- break;
- }
- }
- for (i = 0; i < Nx + 1; i++)
- Uj[i] = Uj1[i];
- t += Ht;
- }
- */
- /*
- cout << t;
- t = 20;
- for (i = 0; i < Nx + 1; i++)
- {
- a = sin(t / 4.5 - x[i] / 2);
- aaa << a << "\n";
- }
- aaa.close();
- */
- //точное решение для а>0
- //t = 5;
- t = 15;
- for (i = 0; i < Nx + 1; i++)
- {
- if (x[i] >= a * t)
- Uex[i] = Uo(x[i] - a * t, X_L);
- else
- Uex[i] = Mu(t - x[i] / a);
- }
- //точное решение для a<0
- /*
- t = 5;
- for (i = 0; i < Nx + 1; i++)
- {
- if (X_L - x[i] >= abs(a) * t)
- Uex[i] = Uo(X_L - x[i] - abs(a) * t, X_L);
- else
- Uex[i] = Mu(t - (X_L - x[i]) / abs(a));
- }
- */
- //приближенное решение для a>0
- t = 0;
- while (t <= 5)
- {
- Uj1[0] = Mu(t);
- for (i = 1; i < Nx + 1; i++)
- Uj1[i] = (1 - gm) * Uj[i] + gm * Uj[i - 1];
- for (i = 0; i < Nx + 1; i++)
- Uj[i] = Uj1[i];
- t += Ht;
- }
- //приблеженное решение для a<0
- /*
- t = 5;
- while (t >= 0)
- {
- Uj1[Nx] = Mu(t);
- for (i = Nx; i >=0; i--)
- {
- Uj1[i] = (1 + gm) * Uj[i] - gm * Uj[i + 1];
- }
- for (i = 0; i < Nx + 1; i++)
- Uj[i] = Uj1[i];
- t = t + Ht;
- }
- */
- ofstream xxx("xxx.txt"), toch("tochresh.txt"), prib("priblresh.txt");
- for (i = 0; i < Nx + 1; i++)
- {
- xxx << x[i] << "\n";
- toch << Uex[i] << "\n";
- prib << Uj[i] << "\n";
- }
- xxx.close();
- toch.close();
- prib.close();
- ifstream xxx1("xxx.txt"), prib1("priblresh.txt"), toch1("tochresh.txt");
- ofstream xxxex("xxxex.txt"), pribreshex("priblreshex.txt"), tochex("tochreshex.txt");
- string s;
- while (xxx1.peek() != EOF)
- {
- xxx1 >> s;
- for (i = 0; i < s.length(); i++)
- if (s[i] == '.')
- s[i] = ',';
- xxxex << s << "\n";
- /*
- prib1 >> s;
- for (i = 0; i < s.length(); i++)
- if (s[i] == '.')
- s[i] = ',';
- pribreshex << s << "\n";
- */
- toch1 >> s;
- for (i = 0; i < s.length(); i++)
- if (s[i] == '.')
- s[i] = ',';
- tochex << s << "\n";
- }
- xxx1.close();
- toch1.close();
- prib1.close();
- xxxex.close();
- tochex.close();
- pribreshex.close();
- delete[]x;
- delete[]Uex;
- delete[]Uj;
- delete[]Uj1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement