Добавил:
t.me я просто люблю помогать людям gym a.k.a regym. S 2021 NA VE4NO ♡♡♡ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
21.10.2024
Размер:
1.98 Кб
Скачать
#include <iostream>
#include <cmath>

static double f(const double& x)
{
    return 8 * sin(2 * x) - 2;
}

static double simpson_counter(const double& a, const double& b, const double& h)
{
    double n = (b - a) / h, intermediateFirst = 0, intermediateSecond = 0;
    for (int i = 1; i <= h / 2; i++) {
        if (i > 1)
        {
            intermediateSecond += f(a + n * (2 * i - 1));
            intermediateFirst += f(a + n * (2 * i - 2));
        }
        else
        {
            intermediateSecond += f(a + n * (2 * i - 1));
        }
    }
    return (n / 3) * (f(a) + f(b) + 4 * intermediateSecond + 2 * intermediateFirst);
}

int main(int args, char* argv[])
{
    static double a, b, e;
    std::cout << "[a] Введите нижнюю границу: ";
    std::cin >> a;
    std::cout << "[b] Введите верхнюю границу: ";
    std::cin >> b;
    static double h;
    std::cout << "[h] Задайте количество отрезков: ";
    std::cin >> h;
    std::cout << "[e] Задайте точность: ";
    std::cin >> e;
    static double counted_integral, counted_integral2, uncertainty;
    do
    {
        counted_integral = simpson_counter(a, b, h);
        h = h*2;
        counted_integral2 = simpson_counter(a, b, h);
        uncertainty = (counted_integral-counted_integral2)/15;
    }
    while (fabs(uncertainty) > e);
    std::cout << "\n\n\n===---------------------------------------------------===\n";
    std::cout << "[∫] Расчёт завершён! Получившееся значение: " << counted_integral2 + uncertainty << "\n";
    std::cout << "Используемые значения: [a = " << a << "]" << " [b = " << b << "]\n";
    std::cout << "Точность: " << e << "\n";
    std::cout << "Оценка погрешности по Рунге: " << uncertainty << "\n";
    std::cout << "===---------------------------------------------------===\n\n\n";
    
    return 0;
    
}
Соседние файлы в папке ЛР-0004 (Численное интегрирование)