2014 dxdy logo

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

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




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


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

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


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

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


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

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


01/08/06
3154
Уфа
Евгений Машеров писал(а):
Ну не дайте помереть от любопытства!
Для чего нужно точное значение факториала 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
10157
Москва
В качестве "в гамаке, но только стоя!" могу предложить держать таблицу простых, найти очевидным образом степени, в которых простые входят в искомый факториал, и использовать что-то наподобие умножения Шёнхаге-Штрассена для нахождения степеней и их перемножения.
Но боюсь, что тупое умножение на все последовательные сомножители будет сильно лучше.

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


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

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


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

 Профиль  
                  
 
 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
10157
Москва
Извините, но Вы не вполне уяснили задачу. 64-битная арифметика для данной задачи, как её поставил топикстартер, крайне недостаточна.
Уже $21!=51090942171709440000>18446744073709551616=2^{64}$
А он желает рассчитывать, притом точно, вплоть до $2500!$.

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


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

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


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

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


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

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

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



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

Сейчас этот форум просматривают: nimepe, YandexBot [bot]


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

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