Top.Mail.Ru
Ответы

Программирование итерационных процессов вычисления с заданной точностью C++

1. Вычислить на ЭВМ значение интеграла (фото 1)
методом прямоугольников с автоматическим выбором шага интегрирования на заданном
интервале интегрирования [a, b] с заданной точностью n
2. Вычислить на ЭВМ длину кривой на заданном интервале [a, b] с заданной точностью n
3.На 2 фото представлены данные по заданию (столбец2-Подынтегральная функция f(x), столбец3-Интервал, столбец4-Заданная точность n)

По дате
По Рейтингу
Аватар пользователя
Мудрец

//program_1
#include <iostream>
#include <iomanip>
#include <cmath>
#include <corecrt_math_defines.h>
using namespace std;

double function(double x)
{
return exp(x) * pow(cos(x), 2);
}

double integral(double a, double b, long n)
{
double h = (b - a) / n, s = 0;
for (long i = 0; i < n; i++)
s += function(a + i * h);
return s * h;
}

int main()
{
const double a = 0, b = M_PI, eps = 0.00002;

long n = 100;
double ps = 0, s = integral(a, b, n);
do
{
ps = s;
n *= 2;
s = integral(a, b, n);
} while (fabs(s - ps) > eps);
cout << fixed << setprecision(10) << s << endl;

cout << "Press Enter key for continue...";
cin.get(); //cin.get();
return 0;
}

//program_2
#include <iostream>
#include <iomanip>
#include <cmath>
#include <corecrt_math_defines.h>
using namespace std;

double function(double x)
{
return sqrt(1 + pow(exp(x) * pow(cos(x), 2) - 2 * exp(x) * cos(x) * sin(x), 2));
}

double integral(double a, double b, long n)
{
double h = (b - a) / n, s = 0;
for (long i = 0; i < n; i++)
s += function(a + i * h);
return s * h;
}

int main()
{
const double a = 0, b = M_PI, eps = 0.00002;

long n = 100;
double ps = 0, s = integral(a, b, n);
do
{
ps = s;
n *= 2;
s = integral(a, b, n);
} while (fabs(s - ps) > eps);
cout << fixed << setprecision(10) << s << endl;

cout << "Press Enter key for continue...";
cin.get(); //cin.get();
return 0;
}