La aproximación de Stirling a un factorial es $$ n! \sim \sqrt{2 \pi n} \left(\frac{n}{e}\right)^n. $$
Me pregunto qué beneficio se puede obtener de ello.
Desde el punto de vista computacional (admito que no sé demasiado sobre cómo se implementa cada operación aritmética y cuál es más barata que cuál), un factorial $n!$ contiene $n-1$ multiplicaciones. En la aproximación de Stirling, también hay que calcular una división y $n$ multiplicaciones para $\left(\frac{n}{e}\right)^n$ ¿No? Más dos multiplicaciones y una raíz cuadrada para $\sqrt{2 \pi n}$ ¿Cómo reduce la aproximación el cálculo?
Puede haber consideraciones desde otras perspectivas. También me gustaría saberlo. Por favor, señale su perspectiva si puede.
Añadido : Para simplificar el análisis mediante la aproximación de Stirling, por ejemplo, la respuesta del usuario1729 Mi preocupación es que, al fin y al cabo, se trata de una aproximación, e incluso si la expresión aproximada converge, ¿no tenemos que demostrar que la expresión original también converge y lo hace a lo mismo que su aproximación?
Gracias y saludos.
14 votos
Bueno, en realidad se puede calcular $n^{n}$ en $O(\log n)$ multiplicaciones. Y si está interesado en $\log(n!)$ en su lugar (como ocurre a menudo), la aproximación de Stirling reduce un cálculo de $n$ logaritmos ( $\log n + \log(n-1) + \dots$ ) a uno solo ( $(n+1/2)\log n - n + O(1)$ ).
0 votos
@mjqxxxx: ¡Gracias! (1) ¿Cómo podemos calcular $n^n$ en $O(\log n)$ multiplicaciones? (2) ¿Es más complicado calcular un logaritmo que hacer el exponencial correspondiente? (3) ¿Es más complicado sacar la raíz cuadrada que el cuadrado?
7 votos
Las aproximaciones pueden utilizarse de muchas maneras. En particular, facilita la comparación de $n!$ a otras funciones, para calcular los límites, etc. Y, como otros han señalado, no es necesario hacer $n$ multiplicaciones para calcular $(\frac{n}{e})^n$ .
3 votos
@Tim Calcular un logaritmo es mucho más caro. No usarías la fórmula de Stirling para estimar $6!$ Se utilizaría para estimar $1,000,000!$ En este caso, el cálculo del logaritmo será mucho más rápido.
2 votos
¡Para una aplicación sencilla, considere el número de claves para un cifrado de sustitución, que es de 26! Dado que $26 \approx 10e, (\frac{26}e)^{26}\approx 10^{26}$ o unos 87 bits (como $10^{27}$ serían 90 bits) y a este nivel no nos importa la parte de la raíz cuadrada.
1 votos
Incluso sin usar logaritmos, puedes calcular $a^n$ utilizando del orden de $\log n$ multiplicaciones. Ver: es.wikipedia.org/wiki/Exponenciación_por_cuadrado
0 votos
Hasta ahora no veo que nadie más mencione que Abraham Demoivre descubrió esta fórmula, ni que diga para qué la utilizó. Véase mi respuesta más abajo.
0 votos
@ThomasAndrews Pasado cierto punto, la complejidad computacional de multiplicar números de precisión arbitraria se vuelve no trivial.
0 votos
@Random832 Claro, pero realmente no nos interesa calcular una aproximación con precisión arbitraria. Esa es la naturaleza de una aproximación. Pero es cierto que la aproximación del logaritmo es mejor a la larga, acabo de dar el enlace de "exponenciación por cuadratura" en respuesta a uno de los comentarios anteriores.
0 votos
@ThomasAndrews: ¡Gracias! Llevo un tiempo pensando en esto. (1) ¿Por qué "el enfoque del logaritmo es mejor a largo plazo", ¿Qué es "el enfoque del logaritmo"? ¡(2) ¿Por qué no "utilizaría la fórmula de Stirling para estimar 6! La usaría para estimar 1.000.000!"? (3) ¿Qué es "este caso" en "en este caso, calcular el logaritmo va a ser mucho más rápido"? ¿A qué método se refiere "calcular el logaritmo"? (4) "Calcular un logaritmo es mucho más caro". ¿Te refieres a $\log_a b$ es mucho más caro que $a^c$ donde $b \equiv a^c$ ?
0 votos
Esto provocó una pregunta posterior y varias respuestas exhaustivas en SciComp (¡venga a visitarnos!). A efectos de esta discusión, un logaritmo en precisión de punto flotante es del orden de 10 veces más caro que la multiplicación equivalente (ambos son vectorizables, aunque el logaritmo requerirá más esfuerzo).