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

Есть условие: Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε. Вывести число итераций, необходимое для достижения заданной точности. Вычисление S(x) и Y(x) оформить в виде функций. введите сюда описание изображения

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

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;


typedef double(*uf)(double, double, int&);
void tabl(double, double, double, double, uf);
double y(double, double, int&);
double s(double, double, int&);

int main()
{
    cout << setw(8) << "x" << setw(15) << "y(x)" << setw(10) << "k" << endl;
    tabl(-0.8, 0.9, 0.1, 0.0001, y);
    cout << endl;
    cout << setw(8) << "x" << setw(15) << "s(x)" << setw(10) << "k" << endl;
    tabl(-0.8, 0.9, 0.1, 0.0001, s);
    return 0;
}

void tabl(double a, double b, double h, double eps, uf fun)
{
    int k = 0;
    double sum;
    for (double x = a; x < b + h / 2; x += h)
    {
        sum = fun(x, eps, k);
        cout << setw(8) << x << setw(15) << sum << setw(10) << k << endl;
    }
}

double y(double x, double eps, int& k)
{
    return ( pow(x + 1, 1 / 4.) - (4 - x / 4) );
}

double s(double x, double eps, int& k)
{
    double a, c, sum;
    sum = a = c = x;
    k = 1;
    while (fabs(c) > eps)
    {
        c = pow(x, 2) / (2 * k * (2 * k + 1));
        a *= -c;
        sum += a;
        k++;
    }
    return sum;
}

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


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