Добавил:
degenetard
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab_3 / prog
.cpp#include <iostream>
#include <cmath>
using namespace std;
double f(double x) {
return sin(x + 1) * exp(2 / x);
}
double simpson(double a, double b, double n) {
double h = (b - a) / n, sum2 = 0, sum4 = 0;
for (int i = 1; i <= n / 2; i++) {
if (i > 1) {
sum4 += f(a + h * (2 * i - 1));
sum2 += f(a + h * (2 * i - 2));
} else {
sum4 += f(a + h * (2 * i - 1));
}
}
return (h / 3) * (f(a) + f(b) + 4 * sum4 + 2 * sum2);
}
int main() {
double a, b, n, Ih, Ih2, d = 1, eps = 1E-3;
cout << "Границы отрезка a и b, количество отрезков n: " << endl;
cin >> a >> b >> n;
do {
Ih = simpson(a, b, n);
n *= 2;
Ih2 = simpson(a, b, n);
d = (Ih - Ih2) / 15;
} while (abs(d) > eps);
cout << "Значение интеграла: " << Ih2 + d << endl;
cout << "Погрешность: " << d << endl;
return 0;
}