C/C++

Циклические алгоритмы. «Разложение функций» на языке Си

Помогите пожалуйста написать рабочую программу для численного убеждения в
справедливости равенства:
(◔‿◔) К сожалению, это произведение при расчётах на ЭВМ с ограниченной разрядной сеткой сходится к гиперболическому косинусу довольно медленно и неточно, а увеличивать количество членов ряда со ста миллионов, например, до миллиарда бесполезно, да ещё и при увеличении |х| абсолютная точность катастрофически падает, потому что ch x - функция экспоненциального роста, а для таких функций любая взятая с потолка формула может оказаться верной скорее только на бумаге, да в математической теории, но никак не при машинных вычислениях! Как же доказать это утверждение на компьютере для любых хє(-∞;+∞) ? Да никак, естественно! (✿^‿^)
На скрине слева приведены значения вычисленной и табличной функций, а также абсолютные ошибки. А на правом скрине даны величины относительных ошибок:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
const double e = 1.0;
double ch, n, p, x, y, z;
while (true)
{
p = 1.0;
cout << "x = ?\b";
cin >> x;
y = x / M_PI;
y *= y;
for (n = 1; n <= 100000000; n++)
{
z = e / (n - 0.5);
p *= e + y * z * z;
}
ch = cosh(x);
cout << setprecision(16) << p << '\n' << ch <<
setprecision(4) << ", error = " << p - ch << endl;
}
}
ВЛ
Владимир Левковский
29 440
Лучший ответ