Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 / modeling2

.cpp
Скачиваний:
0
Добавлен:
18.02.2023
Размер:
1.97 Кб
Скачать
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <iterator>
#include <math.h>

using namespace std;

int const n = 100000, n1 = 1000, m = n / n1;
double f1(double t, double x, double y);
double f2(double t, double x, double y);

int main() {
    int i, k;
    double k11, k12, k13, k14, k21, k22, k23, k24;
    double x, y;
    double res[6][n1 + 1], h, a, b, t, pi;
    pi = 2.0 * asin(1.0);
    a = 0.0;
    b = 20.0;
    h = (b - a) / double(n);
    k = 0;
    x = 1.0;
    y = 0.0;
    t = a;
    res[1][0] = t;
    res[2][0] = x;
    res[3][0] = y;

    for (i = 1; i <= n; i++) {
        k11 = f1(t, x, y);
        k21 = f2(t, x, y);
        k12 = f1(t + h / 2.0, x + h / 2.0 * k11, y + h / 2.0 * k21);
        k22 = f2(t + h / 2.0, x + h / 2.0 * k11, y + h / 2.0 * k21);
        k13 = f1(t + h / 2.0, x + h / 2.0 * k12, y + h / 2.0 * k22);
        k23 = f2(t + h / 2.0, x + h / 2.0 * k12, y + h / 2.0 * k22);
        k14 = f1(t + h, x + h * k13, y + h * k23);
        k24 = f2(t + h, x + h * k13, y + h * k23);
        x = x + h * (k11 + 2.0 * (k12 + k13) + k14) / 6.0;
        y = y + h * (k21 + 2.0 * (k22 + k23) + k24) / 6.0;
        t = t + h;
        if (i % m == 0) {
            k = k + 1;
            res[2][k] = x;
            res[3][k] = y;
            res[1][k] = t;
            printf("x(%.2lf)=%.8lf y(%.2lf)=%.8lf\n",t,x,t,y);
        }
    }

    ofstream file;
    file.open("106.txt", ios::out);
    if (file.is_open())
    {
        for (i = 0; i <= n1; i++) {
            file << res[2][i] << " \t" << res[3][i] << endl;
            //fprintf(file, "%.16lf %.16lf\n", res[2][i], res[3][i]);
        }
        file.close();
    }
}
double f1(double t, double x, double y) {
        return - 0.25 * x - y - x * (x * x + y * y);
}
double f2(double t, double x, double y) {
    return x - 0.25 * y - y * (x * x + y * y);
}
Соседние файлы в папке 2