Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Fattoriale di 1000

319 views
Skip to first unread message

Martello

unread,
Dec 2, 2012, 5:24:59 PM12/2/12
to
Allora forse dico delle banalità ... eh lo so non sono molto bravo ... :-)

Vabbè ... in riferimento al problema di marcoficius con relativa
risposta di kuhnm relativo al problema dei test ...

Ok condivido la posizione di kuhnm che dice che è facile da risolvere ma
c'è un ma e anche un forse ...

Allora quando ci troviamo davanti un calcolo del tipo 1000!/(1000-n)!
con n piuttosto piccolo rispetto a 1000 ma non troppo piccolo e vogliamo
calcolare il risultato con una calcolatrice ...

Ricordo che le calcolatrici non superano 69! per via dell'overflow
sull'esponente >100.

Che si fa?

Una approssimazione decente potrebbe essere questa 1000!/(1000-n)!=
circa (1000-(n-1)/2)^n ... c'è di meglio?

Oltre che farsi i calcoletti in manuale che se n è maggiore di 3
richiedono non poco tempo ...

superpollo

unread,
Dec 2, 2012, 5:48:37 PM12/2/12
to
Martello ha scritto:
> Allora forse dico delle banalità ... eh lo so non sono molto bravo ... :-)
>
> Vabbè ... in riferimento al problema di marcoficius con relativa
> risposta di kuhnm relativo al problema dei test ...
>
> Ok condivido la posizione di kuhnm che dice che è facile da risolvere ma
> c'è un ma e anche un forse ...
>
> Allora quando ci troviamo davanti un calcolo del tipo 1000!/(1000-n)!
> con n piuttosto piccolo rispetto a 1000 ma non troppo piccolo e vogliamo
> calcolare il risultato con una calcolatrice ...
>
> Ricordo che le calcolatrici non superano 69! per via dell'overflow
> sull'esponente >100.
>
> Che si fa?
>
> Una approssimazione decente potrebbe essere questa 1000!/(1000-n)!=
> circa (1000-(n-1)/2)^n ... c'è di meglio?

ln(N!) = sum_{i=1}^N ln(i) ~ int_1^N ln(x)dx per N >> 1.

quindi:

ln(N!) ~ [x*ln(x)-x]_1^N = N*ln(N)-N

quindi:

N! ~ exp(N*ln(N)-N)

quindi ad esempio:

1000!/(1000-100)! ~ exp(1000*ln(1000)-1000)/exp(900*ln(900)-900) =
exp(1000*ln(1000)-900*ln(900)-100) ~ exp(686).

\bye

--
Sintetizzando i*7i = 7i
i*70i = 70i = 7kg.
Perche' 7 = 70i.

Martello

unread,
Dec 3, 2012, 8:35:16 AM12/3/12
to
Non ho ancora avuto il tempo di studiare la tua risposta.

Comunque per ora grazie :-)

Tommaso Russo, Trieste

unread,
Dec 3, 2012, 9:28:20 AM12/3/12
to
Il 03/12/2012 14:35, Martello ha scritto:

> Non ho ancora avuto il tempo di studiare la tua risposta.

Qui la trovi scritta in modo piu' leggibile:

<http://www.google.it/search?hl=it&tbo=d&site=&source=hp&q=approssimazione+di+stirling>

--
TRu-TS
Buon vento e cieli sereni

Kiuhnm

unread,
Dec 3, 2012, 9:49:48 AM12/3/12
to
On 12/3/2012 15:28, Tommaso Russo, Trieste wrote:
> Il 03/12/2012 14:35, Martello ha scritto:
>
>> Non ho ancora avuto il tempo di studiare la tua risposta.
>
> Qui la trovi scritta in modo piu' leggibile:
>
> <http://www.google.it/search?hl=it&tbo=d&site=&source=hp&q=approssimazione+di+stirling>

Manca la mia derivazione, cioè approssimando una distrib. di Poisson con
una Gaussiana. Si vede che è poco nota. L'ho già scritta in un altro
post, ma la riporto anche qui:

"Il passaggio alla Gaussiana c'è anche qui, ma è nascosto, infatti se
approssimi una distrib. di Poisson di media l e varianza l con una
Gaussiana, ottieni
e^{-l} l^x/(x!) ~ 1/sqrt(2pi l) e^{-((x-l)^2)/(2l)}
Per x = l, si ottiene
e^{-l} l^l/(l!) ~ 1/sqrt(2pi l)
da cui
l! ~ l^l e^{-l} sqrt(2pi l)
che è proprio l'approssimazione di Stirling."

Kiuhnm

superpollo

unread,
Dec 3, 2012, 10:53:44 AM12/3/12
to
Tommaso Russo, Trieste ha scritto:
> Il 03/12/2012 14:35, Martello ha scritto:
>
>> Non ho ancora avuto il tempo di studiare la tua risposta.
>
> Qui la trovi scritta in modo piu' leggibile:
>
> <http://www.google.it/search?hl=it&tbo=d&site=&source=hp&q=approssimazione+di+stirling>

era cosi' illeggibile la mia risposta? :-(

Martello

unread,
Dec 3, 2012, 6:22:27 PM12/3/12
to
Il 03/12/2012 16.53, superpollo ha scritto:
> Tommaso Russo, Trieste ha scritto:
>> Il 03/12/2012 14:35, Martello ha scritto:
>>
>>> Non ho ancora avuto il tempo di studiare la tua risposta.
>>
>> Qui la trovi scritta in modo piu' leggibile:
>>
>> <http://www.google.it/search?hl=it&tbo=d&site=&source=hp&q=approssimazione+di+stirling>
>
>
> era cosi' illeggibile la mia risposta? :-(
>
> \bye
>

No la tua ... era molto più semplice e sintetica.

Il problema però è che con la mia approssimazione ottengo errori
percentuali minori rispetto a quella che mi hai indicato.

Simulato con un programma (la calcolatrice va in overflow).

1000!/(1000-100)! =5,95892663224049 E 297
(1000-(100-1)/2)^100=6,24039557384723 E 297 (errore 4,7%)
exp(1000*ln(1000)-900*ln(900)-100)=5,65318651438403 E 297 (errore -5,13%)

Qualcuno ha voglia di verificare?

Peggio ancora se n è più piccolo (con questo la calcolatrice non va in
overflow)

1000!/(1000-30)! =6,44460521197214 E89
(1000-(30-1)/2)^30=6,45206684984233 E89
exp(1000*ln(1000)-970*ln(970)-30)=6,34721639092139 E89


Tommaso Russo, Trieste

unread,
Dec 3, 2012, 6:33:33 PM12/3/12
to
Il 03/12/2012 16:53, superpollo ha scritto:
> Tommaso Russo, Trieste ha scritto:
>> Il 03/12/2012 14:35, Martello ha scritto:
>>
>>> Non ho ancora avuto il tempo di studiare la tua risposta.
>> Qui la trovi scritta in modo piu' leggibile:
>> <http://www.google.it/search?hl=it&tbo=d&site=&source=hp&q=approssimazione+di+stirling>

> era cosi' illeggibile la mia risposta? :-(

No, semplicemente era scritta in ascii (e TeX e' meno faticoso), non
aveva figure e non citava Stirling, per cui dove andava Martello per
approfondire?

Tommaso Russo, Trieste

unread,
Dec 3, 2012, 6:34:50 PM12/3/12
to
Il 03/12/2012 15:49, Kiuhnm ha scritto:

> Manca la mia derivazione, cioè approssimando una distrib. di Poisson con
> una Gaussiana. Si vede che è poco nota. L'ho già scritta in un altro
> post, ma la riporto anche qui:
>
> "Il passaggio alla Gaussiana c'è anche qui, ma è nascosto, infatti se
> approssimi una distrib. di Poisson di media l e varianza l con una
> Gaussiana, ottieni
> e^{-l} l^x/(x!) ~ 1/sqrt(2pi l) e^{-((x-l)^2)/(2l)}
> Per x = l, si ottiene
> e^{-l} l^l/(l!) ~ 1/sqrt(2pi l)
> da cui
> l! ~ l^l e^{-l} sqrt(2pi l)
> che è proprio l'approssimazione di Stirling."


Carina! Ma e' tua tua, o l'hai vista da qualche parte?

Nel primo caso, complimenti.

Kiuhnm

unread,
Dec 3, 2012, 6:44:08 PM12/3/12
to
Non è mia. L'ho trovata in "Information Theory, Inference, and Learning
Algorithms" di David J.C. MacKay.

Kiuhnm

P.S. Il libro è gratuitamente scaricabile dal sito dell'autore.

yo

unread,
Dec 4, 2012, 9:05:57 AM12/4/12
to
La piu' comune, e migliore, e' l'approssimazione del punto di sella della
funzione gamma, che si ricava in due passaggi.
Non per tutta la serie di Stirling, pero', solo per il primo termine, che
funziona all'ordine dell'1%. Per maggior precisione necessiti almeno del
secondo.
0 new messages