Написание рядной функции для вычисления корня из (1+x)

Я видел уже подобный вопрос на просторах Stackoverflow, но там очень неподходящее для меня решение этой проблемы. Мне необходимо написать рядную рекуррентную формулу. Я её написал, но есть проблема. Низкая точность.

double OwNsqrt(double x, double eps)
{
    double s = 1;
    int k = 1;
    double n = -1;
    while (fabs(n) >= eps)
    {
        n = -(n * x) / (k * 2);
        s = s + n;
        k++;
    }
    return s;
}

Кроме того, лично для себя я поставил такое весьма сложное условие, исходя из ряда функции. Что я не использую рекуррентный факториал и функцию pow, а работал через общий член, который добавлял. Если у кого-то есть идеи, как повысить точность вычисления моей функции, подскажите, пожалуйста.


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

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

Да просто используйте верную формулу...

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

double series(double x, double eps)
{
    double t = 1, s = 1;
    for(int k = 1; abs(t) > eps; ++k)
        s += t *= x*(3-2*k)/(2*k);
    return s;
}

Полная программа с результатами - тут.

→ Ссылка