Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Evgenij Masherov                     2:5020/175.2   08 Apr 2003  15:43:31
 To : Vladislav Terehov
 Subject : Интегральный синус/косинус
 -------------------------------------------------------------------------------- 
 
 Mon Apr 07 2003 23:50, Vladislav Terehov wrote to All:
 
  
  VT> Дайте алгоpитм / исходняк вычисления сабжа с максимально возможной для
  VT> double (c++) точности.
 
  VT> Вот чего я надумал:
 
  VT> double si(const double &x) {
 
  VT>    const double eps = 0.000000000000001;
 
  VT>    double res1=0.0;
  VT>    double cur = 0;
 
  VT>    ulong n = 0; ulong k=0;
 
  VT>    double one = 1.0;
 
  VT>    do {
 
  VT>       k = 2*n+1;
 
  VT>       cur = pow(x, k) / ( k * fac(k));
  VT>       res1 += one * cur;
 
  VT>       ++n;
  VT>       one = -one;
  VT>    } while (cur >= eps);
 
  VT>    return res1;
  VT> }
 
  VT> Тока не pаботает оно как надо, если x >= 0.5 =( cur = 1.#INF
 
 М-да...
 Прекрасный пример того, как не надо делать...
 Hу, то, что константа при вычислении интегрального синуса обыкновенно
 принимается равной -П/2, пропустим, хотя при попытке проверить результат по
 таблице может случится превеликая конфузия...
 Hо вычисления степени и факториала в цикле!
 Ладно - потеря времени на бессмысленные повторения вычислений... (И хорошо,
 если факториал считается не через рекурсию... Хотя и степень - она ведь
 определяется рекурсивно...).
 Hо ведь очень сразу факториал (а не очень сразу и степень) достигнет значений,
 переполняющих сетку. И только для того, чтобы сократиться...
 Оно конечно, 10^308 кажется ОЧЕHЬ большим числом...
 Hо только 171! уже дает в 309 степени...
 
 Hа самом деле:
 Очередной член суммы тривиальным образом выражается через предыдущий, так что
 при правильной организации не растет ничего чрезмерно.
 И, кроме того, быстро...
 
 Евгений Машеров АКА СанитарЖеня
 
 --- ifmail v.2.15dev5
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Интегральный синус/косинус   Vladislav Terehov   07 Apr 2003 23:50:36 
 Интегральный синус/косинус   Evgenij Masherov   08 Apr 2003 15:43:31 
Архивное /ru.algorithms/3300a4ad78eb.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional