2014 dxdy logo

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

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




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


08/04/08
8562
Цитата:
Это же Гамма-функция, а она отличается от факториала: $n!=\Gamma (n+1), n! \neq \Gamma (n)$

Но Вы же сами пишете: $n!=\Gamma (n+1)$ :-) используйте это.

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


02/03/11
9
В википедии нашел такую формулу:
$$\Gamma(z)=\lim\limits_{n\to\infty}\frac{n!n^z}{(z+1)\dots (z+n)}=\frac{1}{z}\prod\limits_{n=1}^{\infty}\frac{\left(1+\frac{1}{n}\right)^z}{1+\frac{z}{n}}$$
Попробую подобрать кол-во итераций в вычислении произведения, чтобы был удовлетворяющий ответ.

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


08/04/08
8562
Я Вам все-таки советую с Фихтенгольца начать :roll:

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


02/03/11
9
Sonic86 в сообщении #418976 писал(а):
Я Вам все-таки советую с Фихтенгольца начать :roll:

Спасибо за ссылку, буду курить мануал :)

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


11/03/08
9904
Москва
Формула Стирлинга - приближённая. При этом обычно ограничиваются ещё более приближённым выражение для неё
$ n! = \sqrt{2\pi n}  n^n/e^n$
пренебрегая поправками вида $(1+\frac{1}{12n}+\frac{1}{288n^2}-\frac{139}{51840n^3}+O(n^{-4}))$
При этом точного значения она не даёт никогда. Её ценность в том, что при больших n она даёт малую относительную ошибку. Но, поскольку $n!$ растёт куда быстрее $(1+\frac{1}{12n}+...)$ абсолютная ошибка очень быстро возрастает.
Для большинства приложений, в которых востребована замена факториала Стирлингом, величина факториала "сокращается" (как, скажем, при выведении нормального распределения через биномиальное), так что результат имеет не только малую относительную, но и малую абсолютную ошибку.
Если же нужно точное целочисленное значение факториала (зачем?!), то остаётся только перемножать числа непосредственно.

-- Ср мар 02, 2011 16:34:01 --

Что до предлагаемой идеи вычислять, скажем, $5.54!$ через $0.54!$ по формуле Стирлинга и приведение через $n!=n\cdot (n-1)!$, то она даст большую ошибку, чем непосредственно $5.54!$ по Стирлингу. Поскольку чем меньше аргумент, тем больше относительная ошибка Стирлинга, а большая относительная ошибка, умноженная на значение факториала, даст большую абсолютную ошибку, чем непосредтвенный расчёт по Стирлингу.
Не представляется также осмысленной идея вычислять через бесконечное произведение.
Вот некоторые алгоритмы для гамма-функции:
http://www.rskey.org/gamma.htm
http://mathworld.wolfram.com/GammaFunction.html
http://functions.wolfram.com/GammaBetaErf/Gamma/06/

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


01/08/06
3131
Уфа
А нет ли настолько точной быстрой формулы, чтобы можно было (теоретически) для любого натурального числа прикинуть число нулей (ну, или в какой-нибудь другой системе счисления посчитать делимость), округлить и получить точный результат?

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


08/04/08
8562
Ну число цифр-то $\sim K \ln n! \sim K n (\ln n - 1) +C + \varepsilon _n$. Быть может погрешность $\varepsilon _n = O(n^{-1})$ не дает весомого вклада... Хотя если $\varepsilon _n = O(n^{-1})$, то $\sum \varepsilon _ n \sim \ln n$, а значит иногда (но очень редко), формула будет ошибочна :roll:

Число нулей $\sim \frac{n}{5}$, ессно.

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


04/05/09
4587
Sonic86 в сообщении #419572 писал(а):
Число нулей $\sim \frac{n}{5}$, ессно.
$\sim \frac n 4$, точнее $\sum\limits_{k=1}^{\infty}\left\lfloor\dfrac n {5^k}\right\rfloor$.

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


08/04/08
8562

(Оффтоп)

да, наврал, хотел написать $\frac{n}{5-1}$

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


11/03/08
9904
Москва
Знание числа нулей $M$ поможет при округлении, если абсолютная ошибка окажется меньше, чем $10^M$
Однако число разрядов в факториале числа $N$ растёт, как $O(N \ln N)$, тогда как число нулей приблизительно равно $N/4$, то есть даже при очень малой относительной ошибке абсолютная ошибка будет расти куда быстрее, чем $10^M$
Так, $1000!$ приблизительно равно $4.02387260077093773543702433923*10^2567$, тогда как нулей в нём лишь $249$, то есть относительная ошибка должна быть меньше $10^{-2328}$, что, видимо, потребует нахождения поправочных членов порядка эдак до восьмисотого.
Ну и праздный вопрос - зачем? Зачем такие калькуляции? Если чисто спортивный результат - умножайте непосредственно. Может, даже безо всякого Шёнхаге. Длинное накопительное произведение на короткий сомножитель.

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


08/03/11
9
США Филадельфия
Можно легко вычислять через Логарифм Факториалов очень больших чисел. Относительная точность зависит от точности расчетов в компьютере.

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


08/03/11
9
США Филадельфия
Попробуйте использовать формулу ln(n!) а потом потенциировать результат.

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


11/03/08
9904
Москва
"Спасибо, кэп!"
Автор начинает с того, что применяет некий вариант этого подхода (а считать степени $n^n$ без логарифмов как-то затруднительно) и неудовлетворён нарастанием абсолютной ошибки.

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


22/12/10
264
Ну вот как раз «количество нулей», точнее, количество знаков в десятичном разложении, вполне можно прикинуть по формуле Стирлинга. Считаем $\ln n!$ и делим на $\ln 10$.

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


09/03/11
2
Есть еще вариант вычисления больших факториалов в Matlab :) точность можно задать самому :) хотите сказать, что matlab более 170! не вычислит? Соглашусь, однако можно пойти другим путем :) вот пример вычисления факториала 1000000 с точностью 1000 знаков в matlab:
vpa(solve('x=factorial(1000000)'),1000) :mrgreen:

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

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



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

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


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

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