2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение09.03.2011, 18:41 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Речь о "количестве нулей" ведётся о (сюрприз, сюрприз!) количестве нулей в конце записи числа. Идея состояла в том, что, зная это количество нулей, округлять приближённое значение так, чтобы нулей было "сколько надо". Но количество нулей растёт медленнее ошибки, так что для больших $N$ это не работает.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение09.03.2011, 19:06 
Заслуженный участник
Аватара пользователя


01/08/06
3131
Уфа
Да, я теперь понял, что самый быстрый способ точного вычисления факториала — прямое перемножение, иллюзии отпали.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение10.03.2011, 00:37 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Ну не дайте помереть от любопытства!
Для чего нужно точное значение факториала 25000?

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение10.03.2011, 16:11 
Заслуженный участник
Аватара пользователя


01/08/06
3131
Уфа
Евгений Машеров писал(а):
Ну не дайте помереть от любопытства!
Для чего нужно точное значение факториала 25000?
Само по себе, возможно, никому не нужно. Так же, как никому не нужно, скажем, доказательство теоремы Ферма.
А вдруг эта задача позволит развиться какому-нибудь полезному методу вычислений?

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение25.10.2011, 08:01 
Аватара пользователя


09/03/11
2
Доброго времени суток :D
Попробуйте вычислить факториал 1000000 в mathematica 8 (x64) вычисляет до последнего знака. Вконце предлагает задать точность, там выбираем "show all" :mrgreen:
А 25000! это вообще проще простого :D

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение25.10.2011, 19:59 


25/08/11

1074
Есть более точная формула Сонина

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение25.10.2011, 21:23 
Заслуженный участник


27/04/09
28128
Sidle, автор темы в самом начале упомянул, что он реализует алгоритм для своего калькулятора. Matlab или Mathematica туда засовывать он точно не станет.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение26.10.2011, 13:54 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
В качестве "в гамаке, но только стоя!" могу предложить держать таблицу простых, найти очевидным образом степени, в которых простые входят в искомый факториал, и использовать что-то наподобие умножения Шёнхаге-Штрассена для нахождения степеней и их перемножения.
Но боюсь, что тупое умножение на все последовательные сомножители будет сильно лучше.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение26.10.2011, 14:38 
Заслуженный участник


04/05/09
4587
Евгений Машеров в сообщении #496142 писал(а):
Но боюсь, что тупое умножение на все последовательные сомножители будет сильно лучше.
Лучше организовать умножение так, чтобы сомножители были одного порядка.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение26.10.2011, 15:02 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Это очень хороший совет для вычислений с плавающей точкой - группировать сомножители так, чтобы порядок их был примерно одинаков, и лучше всего был бы близок к единице. Тогда риск получить по ходу вычислений переполнение или исчезновение порядка минимален.
Но тут топикстартер, полагаю, удовлетворится лишь длинной целой арифметикой. И особого эффекта от переупорядочения не жду.
Впрочем, обсуждаемо.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение26.10.2011, 15:23 


10/10/10
109
Если арифметика 64 битная то как вариант использовать такой алгоритм

Код:
a=1
b=1
k=2^64 div n -1
for i=1 to n
a*=i
if a>k then b*=a: a=1
next
a*=b


ускорение будет несколько раз

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение26.10.2011, 16:44 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Извините, но Вы не вполне уяснили задачу. 64-битная арифметика для данной задачи, как её поставил топикстартер, крайне недостаточна.
Уже $21!=51090942171709440000>18446744073709551616=2^{64}$
А он желает рассчитывать, притом точно, вплоть до $2500!$.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение26.10.2011, 17:00 
Заслуженный участник


04/05/09
4587
Евгений Машеров в сообщении #496159 писал(а):
Это очень хороший совет для вычислений с плавающей точкой - группировать сомножители так, чтобы порядок их был примерно одинаков, и лучше всего был бы близок к единице. Тогда риск получить по ходу вычислений переполнение или исчезновение порядка минимален.
Но тут топикстартер, полагаю, удовлетворится лишь длинной целой арифметикой. И особого эффекта от переупорядочения не жду.
Впрочем, обсуждаемо.
Я как раз и имел в виду целочисленную арифметику.
Если последовательно умножать на маленькие числа, то сложность будет $O(n^2)$, где $n$ - длина результата. Если же умножать близкие по величине числа, то сложность будет $O(n \ln^2 n)$. Естественно, для этого нужно использовать эффективное умножение со сложностью $n\ln n$.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение26.10.2011, 19:21 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Не то, чтобы невозможно... Но, полагаю, на рассматриваемых диапазонах аргументов (до 2500) выигрыш в порядке числа операций перекроется усложнением их.

 Профиль  
                  
 
 Re: Точность подсчета факториала через формулу Стирлинга
Сообщение26.10.2011, 20:31 
Заслуженный участник


04/05/09
4587
Евгений Машеров в сообщении #496239 писал(а):
Не то, чтобы невозможно... Но, полагаю, на рассматриваемых диапазонах аргументов (до 2500) выигрыш в порядке числа операций перекроется усложнением их.
Даже для 2500 у меня быстрее раза в два (с gmp): 0.44мс вместо 1мс. ;-)
Для 25000 уже в 10 раз быстрее.

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

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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