2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Проблемы с суммированием ряда на C
Сообщение23.03.2009, 21:30 


23/03/09
7
Здравствуйте.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char** argv)
{
    int N = atoi(argv[1]);
    double s = 0.0;
    int n;
    for (n = 1; n <= N; n++)
    {
    /* результат другой!! Уже при N = 1000 s оказывается < 0.65!! */
    /* s += (1.8*n + 1.2) / (n*n*n*n + 1.8*n*n*n + 1.2*n*n);
    /**/
        s += (1.8*n + 1.2) / (pow(n, 4) + 1.8*pow(n,3) + 1.2*pow(n,2));
    }
    s = M_PI*M_PI/6.0 - s;
    printf("%.16f", s);
    return 0;
}

Один вариант при компилировании я назвал s1, другой s1_2 и вот что получается на выходе
Код:
D:\>s1 1000
0.6525800476750094
D:\>s1_2 1000
0.6496627497603147

Какому варианту верить больше и почему? Почему получаются разные ответы? Как работает функция pow()?

Может быть, посоветуете в какую сторону смотреть (м.б., книги, ссылки и т.п), чтобы разобраться, что к чему в подобных вопросах?

 Профиль  
                  
 
 
Сообщение23.03.2009, 22:09 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Верить - точному ответу (если он вообще считается), а вариантов-то масса. К слову, можете попробовать считать с конца, типа for (n = N; n >= 1; n--), там получится ещё несколько разных ответов.
Смотреть же в сторону floating-point чисел и особенностей операций с ними.

 Профиль  
                  
 
 
Сообщение23.03.2009, 22:13 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Поскольку расхождение уже при N=1000, я бы посмотрел значения слагаемых при N около 1000 и сравнил бы их с вычисленными с помощью арифметики высокой точности.
Мне кажется, pow менее точен, поскольку мне помнится, что он считается как exp(a*ln(b))

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group