В ответе функции выдают nan
Программа вместо значений функций Js(2 * n, a, b) и P(n, a, b), в конце выдает nan. При меньших на 2 порядка значениях b ответ нормальный, но нужно именно это значение
#include <iostream>
#include <cmath>
using namespace std;
double f(double x) {
return atan(x) / sqrt(1 + pow(x, 3));
}
double Js(int n, double a, double b) {
double h = (b - a) / (2 * n);
double sum1 = 0, sum2 = 0;
for (int i = 0; i < n; ++i) {
sum1 += f(a + (2 * i + 1) * h);
if (i > 0) {
sum2 += f(a + 2 * i * h);
}
}
return (b - a) / (6 * n) * (f(a) + f(b) + 4 * sum1 + 2 * sum2);
}
double P(int n, double a, double b) {
return abs(Js(n, a, b) - Js(2 * n, a, b)) / 15;
}
int main() {
double a = 1;
double b = pow(3.14, 2) / (25 * pow(10, -10));
double epsilon = 1.0 / 100;
int n = 1;
while (abs(P(n, a, b)) > epsilon) {
n *= 2;
}
cout << "n: " << n << endl;
cout << "Js(2*n): " << Js(2 * n, a, b) << endl;
cout << "P(n): " << P(n, a, b) << endl;
return 0;
}