Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #define eps 0.000001
- using namespace std;
- double f(double t, double u)
- {
- return 4 / (t * t) - u / t - u * u;
- }
- double df(double t, double u)
- {
- return -1 / t - 2 * u;
- }
- double F(double t, double y, double x, double h)
- {
- return x - y - (h / 2) * (f(t, y) + f(t + h, x));
- }
- double dF(double t, double x, double h)
- {
- return 1 - (h / 2) * df(t + h, x);
- }
- void priblizhennoe(double t0, double U0, double h, int N)
- {
- double y, t, x_prev, x_curr;
- y = U0;
- t = t0;
- bool a;
- cout << "При t" << 0 << " = " << t << " U" << 0 << " = " << y << "\n";
- for (int i = 0; i < N; i++)
- {
- x_curr = 0;
- x_prev = t;
- a = true;
- while (a)
- {
- x_curr = x_prev - F(t, y, x_prev, h) / dF(t, x_prev, h);
- if (abs(x_curr - x_prev) < eps)
- a = false;
- x_prev = x_curr;
- }
- t += h;
- y = x_curr;
- cout << "При t" << i + 1 << " = " << t << " U" << i + 1 << " = " << y << "\n";
- }
- }
- void tochnoe(int N, double h, double t0, double U0)
- {
- double t, u;
- t = t0;
- u = U0;
- cout << "При t" << 0 << " = " << t << " U" << 0 << " = " << u << "\n";
- for (int i = 0; i < N; i++)
- {
- t = t + h;
- u = (2 * (t * t * t * t + 0.2)) / (t * (t * t * t * t - 1 / 5));
- cout << "При t" << i + 1 << " = " << t << " U" << i + 1 << " = " << u << "\n";
- }
- }
- int main()
- {
- setlocale(LC_ALL, "RU");
- double t0, T, U0, h;
- int N;
- cout << "Введите t0 и T: \n";
- cin >> t0 >> T;
- cout << "Введите N и U0: \n";
- cin >> N >> U0;
- h = (T - t0) / N;
- cout << "Приближенные решения: \n";
- priblizhennoe(t0, U0, h, N);
- cout << "\n";
- cout << "Точные решения: \n";
- tochnoe(N, h, t0, U0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement