Не получается получить правильный ответ при разложении в ряд, что можно поменять в формуле?

Есть условие: Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x, изменяющегося от a до b с шагом h = (b – a)/10.

введите сюда описание изображения

Не получается получить правильный ответ, ошибка скорее всего в формуле, пытался n-e кол-во раз исправить, но что-то не идёт.

КОД:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std; 

int main()
{
    double a = 0.2, b = 0.8, h = (b - a) / 10, x, y, sum, koef;
    int n = 120;
    
    cout << "TABLICA ZNACHENIY x, Y(x), S(x)" << endl << setw(15) << "x: " << setw(15) << "Y(x):" << setw(15) << "S(x):" << setw(15) << endl;
    for (double x = a; x <= b + h / 2; x += h)
    {
        koef = x;
        sum = 0;
        for (int i = 1; i < n; i++)
        {
            koef *= i * i * x / (2 * i + 1); 
            sum += koef;
        }
        y = 1 / 4. * ((x + 1.) / sqrt(x) * sinh(sqrt(x)) - cosh(sqrt(x)));
        cout << setw(15) << x << setw(15) << y << setw(15) << sum << setw(15) << endl;
    }
    return 0;
}

Нужна помощь!!!


Ответы (2 шт):

Автор решения: Harry

Смущает счет не до точности, а по количеству членов, но - хозяин - барин...

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std; 

int main()
{
    double a = 0.2, b = 0.8, h = (b - a) / 10, n = 120;

    cout << "TABLICA ZNACHENIY x, Y(x), S(x)" << endl
        << setw(15) << "x: " << setw(15) << "Y(x):" << setw(15) << "S(x):" << setw(15) << endl;

    for (double x = a; x <= b + h/2; x += h)
    {
        double term = x/6, sum = term;
        for (int i = 2; i <= n; i++)
        {
            term *= i*i*x/((i-1)*(i-1)*(2*i)*(2*i+1));
            sum += term;
        }
        double y = 1 / 4. * ((x + 1.) / sqrt(x) * sinh(sqrt(x)) - cosh(sqrt(x)));
        cout << setw(15) << x << setw(15) << y << setw(15) << sum << setw(15) << endl;
    }
    return 0;
}

Вы просто отношение членов записали неверно :(

→ Ссылка
Автор решения: Aziz Umarov

Думаю что у вас где-то пропал факториал

koef *= i * i * x / (2 * i + 1); 

Тут думаю.

Но в любом случае 2*n +1 = 120*2+1 = 241! Это не маленькое число.

→ Ссылка