float func(float x)
{
float s = 1, q = 1, sv = pow((1+x), -0.25), eps = 1e-4;
for( int i = 1; abs(s-sv) > eps; i++ )
{
q *= x * (4*n-3) / (4*n);
s += (1.0 - 2.0*(i % 2))*q;
}
return s;
}
точность (c)
которая разлагает в ряд 1 - x*1/4 + x^2*1*5/(4*8) - ... ((-1)^n) * x^n * 1*5*...*(4n-3) / (4*8*...*4n)
для |x|<1
надо посчитать ряд до какой-то точности eps
для проверки использовать либу math.h посчитать по формуле
вот написал функцию
Код:
проблема такая... если в форе вторым параметром поставить i < 1000 (например) то всё работает... а если поставить abs(s-sv) > eps то не считает до нужной точности... просто считает непонятно что... при x = 0.0001 совпадает с посчитанной функции, а при x = 0.2 различается уже при втором знаке после запятой)) чего не так?
Код:
q *= x * (4*n-3) / (4*n);
надо же i вместо n.
пасиб... с fabs() правильно вроде работает)