Rozwijanie szeregu MacLaurina

0

Witam, mam obliczyć z podawaną na wejściu dokładnością wyrażenie (1-x)^(1/4), gdzie x, ofc, też podany.

double newton(double n, double k)
{
    if(n>1)
        return (n-k+1)/n*newton(n, k-1);
    else
        return n;
}

double rozwiniecie(double x, double eps)
{
    double tmp=0.0, sum=0.0;
    unsigned int n = 0;

    while (true)
    {
        // http://www.wolframalpha.com/input/?i=maclaurin+sqrt%28sqrt%281-x%29%29+
        tmp=(pow(x, n)*pow(-1,n)*newton(0.25, n));
        if (fabs(tmp) < eps) return sum;
        sum+=tmp;
        n++;
    }
}

Niestety, wyniki, pomimo różnych zadawanych wartości eps, nigdy nie są nawet zbliżone do wolframowych. Mam pytanie, czy robię jakiś błąd w warunku if(fabs(tmp)<eps) return sum, trochę późno jest i nie mogę zaczaić gdzie.

0

Skopałeś symbol Newtona

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.