Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

точность (c)

271
17 марта 2007 года
MrXaK
721 / / 31.12.2002
Есть формула (1+x)^(-1/4)
которая разлагает в ряд 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 посчитать по формуле
вот написал функцию
 
Код:
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;
}

проблема такая... если в форе вторым параметром поставить i < 1000 (например) то всё работает... а если поставить abs(s-sv) > eps то не считает до нужной точности... просто считает непонятно что... при x = 0.0001 совпадает с посчитанной функции, а при x = 0.2 различается уже при втором знаке после запятой)) чего не так?
257
17 марта 2007 года
kosfiz
1.6K / / 18.09.2005
да правильно все только надо fabs(еще есть fabsl), а не abs. и ты наверное описался в
 
Код:
q *= x * (4*n-3) / (4*n);

надо же i вместо n.
271
17 марта 2007 года
MrXaK
721 / / 31.12.2002
угу, i вместо n это описка)
пасиб... с fabs() правильно вроде работает)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог