#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
double x, s, t, a, q, e;
long n = 2;
cin >> x >> e;
s = (t = x / 2) * (2 - x);
q = x * x * x * x;
do {
n += 4;
s += (a = (t *= q / (n * (n - 1) * (n - 2) * (n - 3))) * (n - x));
} while (fabs(a) >= e);
cout << setprecision(16) << s << ' ' << (sin(x) + cos(x) - exp(-x)) / 2;
}
Ксения РайтГений (97140)
5 дней назад
Не могу понять почему при х=10 грубая ошибка возникает и в Вашем варианте, и в таком:
#include <cmath>
#include <iostream>
int main()
{
double E, e, p, s, q, x, y;
std::cout.precision(16);
while (true)
{
std::cout << "x E: ";
std::cin >> x >> E;
p = x * x;
y = p * p;
p = 0.5 * x;
s = p * (2. - x);
q = e = 2.;
while (fabs(e) > E)
s+=(e=(((q+=4.)-x)*(p*=(y/(q*(q-1.)*(q-2.)*(q-3.))))));
y = (sin(x) + cos(x) - exp(-x)) * 0.5;
std::cout << s << ", err=" << s - y << std::endl;
}
}
Прямо мистика какая-то! То ли что-то тут не то со сходимостью, хотя при близких к х=10 значениях всё вроде нормально, то ли ещё что-то не так...