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  След.

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



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

Сейчас этот форум просматривают: Google [Bot]


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

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