Stirling公式

Stirling 公式


Stirling公式

  • 1.阶乘

    n ! = n ( n − 1 ) ( n − 2 ) ⋯ × 3 × 2 × 1 ( n ≥ 1 ) n! = n(n-1)(n-2)\cdots\times3\times2\times1\quad(n\geq1) n!=n(n1)(n2)×3×2×1(n1) 0 ! = 1 0!= 1 0=1

  • Stirling公式

    n ! ≈ 2 π n ( n e ) n n! \approx \sqrt{2\pi n}(\frac{n}{e})^n n!2πn (en)n

    当n足够大的时候,n!的计算量很大,Stirling公式这个时候就很好用,公式也可以变形为

    lim ⁡ n   + ∞ n ! 2 π n ( n e ) n = 1 \lim_{n \ +\infty} \frac{n!}{\sqrt{2\pi n}(\frac{n}{e})^n}=1 n +lim2πn (en)nn!=1

    或者也等价于

    lim ⁡ n   + ∞ e n n ! n n n = 2 π \lim_{n \ +\infty}\frac{e^nn!}{n^n\sqrt{n}}=\sqrt{2\pi} n +limnnn enn!=2π

    在Wikipedia上看到,Stirling公式是由 A b r r ′ m a h a m d e M o i v r e {\rm Abrr'maham de Moivre} AbrrmahamdeMoivre发现的,不过没有那么精确

    n ! = c n n + 1 2 e − n n! = cn^{n+\frac{1}{2}}e^{-n} n!=cnn+21en 其中c为常数,后来Stirling证明了 c = 2 π n c=\sqrt{2\pi n} c=2πn ,约为2.506628274631.更加精确的形式是由雅克·比内发现的。

推导

这个公式的误差的估计,可以推导如下。首先不直接估计 n ! n! n!,而是考虑它的自然对数:

l n ( n ! ) = l n 1 + l n 2 + l n 3 + ⋯ + l n n . \mathsf {ln}(n!) = \mathsf {ln}1+\mathsf {ln}2+\mathsf {ln}3+\cdots+\mathsf {ln}n. ln(n!)=ln1+ln2+ln3++lnn.

即:

l n ( n ! ) − 1 2 l n n = l n 1 + l n 2 + ⋯ + l n n − 1 2 l n n l n \mathsf {ln}(n!)-\frac{1}{2}\mathsf {ln}n=\mathsf {ln}1+\mathsf {ln}2+\cdots+lnn-\frac{1}{2}\mathsf {ln}n \mathsf {ln} ln(n!)21lnn=ln1+ln2++lnn21lnnln

这个方程的右边是积分 ∫ 1 n l n ( x ) d x = n l n n − n + 1 \int_1^n\mathsf {ln}(x)dx=n\mathsf {ln}n-n+1 1nln(x)dx=nlnnn+1的近似值(利用梯形法则),而他的误差由欧拉-麦克劳林公式给出:

l n ( n ! ) − l n n 2 = l n 1 + l n 2 + l n 3 ⋯ + l n ( n − 1 ) + l n n 2 = n l n n − n + 1 + ∑ k = 2 m B k ( − 1 ) k k ( k − 1 ) ( 1 n k − 1 − 1 ) + R m , n \mathsf {ln}(n!)-\frac{\mathsf {ln}n}{2}=\mathsf {ln}1+\mathsf {ln}2+\mathsf {ln}3\cdots+\mathsf {ln}(n-1)+\frac{\mathsf {ln}n}{2}=n\mathsf {ln}n-n+1+\sum_{k=2}^m\frac{B_k(-1)^k}{k(k-1)}(\frac{1}{n^{k-1}}-1)+R_{m,n} ln(n!)2lnn=ln1+ln2+ln3+ln(n1)+2lnn=nlnnn+1+k=2mk(k1)Bk(1)k(nk111)+Rm,n

其中 B k B_k Bk是伯努利数, R m , n R_{m,n} Rm,n是欧拉麦克劳林中的余项。取极限,可得:

lim ⁡ n → ∞ ( l n n ! − n l n n + n − l n n 2 ) = 1 − ∑ k = 2 m B k ( − 1 ) k k ( k − 1 ) + lim ⁡ n → ∞ R m , n . \lim_{n\to\infty} (\mathsf {ln}n!-n\mathsf {ln}n+n-\frac{\mathsf {ln}n}{2})=1-\sum_{k=2}^m\frac{B_k(-1)^k}{k(k-1)}+\lim_{n\to \infty} R_{m,n}. nlim(lnn!nlnn+n2lnn)=1k=2mk(k1)Bk(1)k+nlimRm,n.

把这个极限记为 y \mathsf y y .由于欧拉-麦克劳林公式中的余项 R m , n R_{m,n} Rm,n满足:

R m , n = lim ⁡ n → ∞ + O ( 1 n 2 m − 1 ) R_{m,n} = \lim_{n\to \infty}+\Omicron(\frac{1}{n^{2m-1}}) Rm,n=nlim+O(n2m11)

其中用到了大 O \Omicron O符号,与以上的方程结合,便得出对数形式的近似公式:

l n n ! = n l n ( n e ) + l n n 2 + y + ∑ k = 2 m B k ( − 1 ) k k ( k − 1 ) n k − 1 + O ( 1 n 2 m − 1 ) \mathsf {ln}n! = n\mathsf {ln}(\frac{n}{e})+\frac{\mathsf {ln}n}{2}+y+\sum_{k=2}^m\frac{B_k(-1)^k}{k(k-1)n^{k-1}}+\Omicron(\frac{1}{n^{2m-1}}) lnn!=nln(en)+2lnn+y+k=2mk(k1)nk1Bk(1)k+O(n2m11)

两边取质数,并选择任何正整数 m m m,便得到了一个含有未知数 e y e^y ey的公式。当 m = 1 m=1 m=1时,公式为:

n ! = e y n ( n e ) n [ 1 + O ( 1 n ) ] n!=e^y\sqrt n(\frac{n}{e})^n[1+\Omicron(\frac1n)] n!=eyn (en)n[1+O(n1)]

这个上述表达式带入沃利斯乘积公式,并令 n n n趋于无穷,便可以得出

e y ( e y = 2 π ) e ^y(e^y=\sqrt {2\pi}) ey(ey=2π )

因此,我们便得出斯特林公式:

n ! = 2 π n ( n e ) n [ 1 + O ( 1 n ) ] n!=\sqrt {2\pi n}(\frac ne)^n[1+\Omicron(\frac 1n)] n!=2πn (en)n[1+O(n1)]

这个公式也可以反复使用分部积分法来得出,首相可以通过最速下降法得到。把以下的和:

l n ( n ! ) = ∑ j = 1 n l n j \mathsf {ln}(n!)=\sum_{j=1}^n\mathsf {ln}j ln(n!)=j=1nlnj

用积分近似代替,可以得出不含 2 π n \sqrt {2\pi n} 2πn 的因子的Stirling公式(这个因子通常在实际应用中无关):

∑ j = 1 n l n j ≈ ∫ 1 n l n x d x = n l n n − n + 1 \sum_{j=1}^n\mathsf {ln}j\approx \int_1^n\mathsf {ln}xdx=n\mathsf {ln}n-n+1 j=1nlnj1nlnxdx=nlnnn+1

收敛速率和误差分析

更加精确的近似公式为:

n ! = 2 π n ( n e ) n e λ n n!=\sqrt{2\pi n}(\frac ne)^ne^{\lambda_n} n!=2πn (en)neλn

其中:

1 12 n + 1 < λ n < 1 12 n \frac1{12n+1}<\lambda_n<\frac 1{12n} 12n+11<λn<12n1

Stirling公式实际上是一下级数(现在成为Stirling级数)的第一个近似值:

n ! = 2 π n ( n e ) n ( 1 + 1 288 n 2 − 139 51840 n 3 − 517 2488320 n 4 + ⋯   ) n!=\sqrt{2\pi n}(\frac ne)^n(1+\frac 1{288n^2}-\frac {139}{51840n^3}-\frac{517}{2488320n^4}+\cdots) n!=2πn (en)n(1+288n2151840n31392488320n4517+)

n → ∞ n \to \infty n时,截断级数的误差等于第一个省略掉的项。这是渐进展开式的一个例子。他不是一个收敛级数,对于任何特殊值n,级数的准确性只在取有限个项时达到最大,如果取更多的项,则准确性将变得越来越差。
阶乘的对数的渐近展开式也称为Stirling级数:

l n n ! = n l n n − n + 1 2 l n ( 2 π n ) + 1 12 n − 1 360 n 3 + 1 1260 n 5 − 1 1680 n 7 + ⋯ \mathsf {ln}n!=n\mathsf {ln}n-n+\frac 12 \mathsf {ln}(2\pi n)+\frac 1{12n}-\frac 1{360n^3}+\frac 1{1260n^5}-\frac 1{1680n^7}+\cdots lnn!=nlnnn+21ln(2πn)+12n1360n31+1260n511680n71+

这种情况下,级数的误差总是与第一个省略掉的异号,且最多同大小。

Gamma函数的Stirling公式

对于所有正整数,有:

n ! = Π ( n ) = Γ ( n + 1 ) . n!= \Pi (n)=\Gamma(n+1). n!=Π(n)=Γ(n+1).

然而,Gamma函数与阶乘不一样,他对于所有复数都有定义。尽管如此,Stirling公式仍然适用。如果 R ( z ) > 0 R(z)>0 R(z)>0,那么:

l n Γ ( z ) = ( z − 1 2 ) l n z − z + l n 2 π 2 + 2 ∫ o ∞ a r c t a n t 2 e 2 π t − 1 d t \mathsf {ln}\Gamma(z)=(z-\frac 12)\mathsf {ln}z-z+\frac{\mathsf {ln}2\pi}2+2\int_o^\infty\frac{arctan\frac t2}{e^{2\pi t}-1}dt lnΓ(z)=(z21)lnzz+2ln2π+2oe2πt1arctan2tdt

反复使用分部积分法,可得一下渐近展开式:

l n Γ ( z ) = ( z − 1 2 ) l n z − z + l n 2 π 2 + ∑ n = 1 ∞ ( − 1 ) n − 1 B n 2 n ( 2 n − 1 ) z 2 n − 1 \mathsf {ln}\Gamma (z)=(z-\frac 12)\mathsf {ln}z-z+\frac {\mathsf {ln} 2\pi}2 +\sum_{n=1}^\infty\frac{(-1)^{n-1}B_n}{2n(2n-1)z^{2n-1}} lnΓ(z)=(z21)lnzz+2ln2π+n=12n(2n1)z2n1(1)n1Bn

其中 B n B_n Bn是第n个伯努利数。当 ∣ a r g z ∣ < π − ϵ |arg z|<\pi-\epsilon argz<πϵ,其中 ϵ \epsilon ϵ 是正数时,这个公式对于绝对值足够大的 z z z是适用的,当使用了最初 m m m个项时,误差为 O ( z − m − 1 2 ) \Omicron(z^{-m-\frac 12}) O(zm21)。对应的近似值可以写为:

Γ ( z ) = 2 π z ( z e ) z [ 1 + O ( 1 z ) ] \Gamma (z)=\sqrt{\frac {2\pi}{z}}(\frac ze)^z[1+\Omicron(\frac 1z)] Γ(z)=z2π (ez)z[1+O(z1)]

Stirling公式的收敛公式

欲得出Stirling公式的一个收敛形式,我们必须计算:

∫ 0 ∞ 2 a r c t a n t 2 e 2 π t − 1 d t = l n Γ ( z ) − ( z − 1 2 ) l n z + z − 1 2 l n ( 2 π ) \int_0^\infty \frac {2arctan\frac t2 }{e^{2\pi t}-1}dt=\mathsf {ln}\Gamma(z)-(z-\frac 12)\mathsf {ln}z+z-\frac 12 \mathsf {ln}(2\pi) 0e2πt12arctan2tdt=lnΓ(z)(z21)lnz+z21ln(2π)

一种方法是利用含有上升阶乘幂的级数。如果

z n ‾ = z ( z + 1 ) ⋯ ( z + n − 1 ) z^{\overline n}=z(z+1)\cdots(z+n-1) zn=z(z+1)(z+n1)

那么:

∫ 0 ∞ 2 a r c t a n t 2 e 2 π t − 1 d t = ∑ n = 1 ∞ c n ( z + 1 ) n ‾ \int_0^\infty \frac {2arctan\frac t2 }{e^{2\pi t}-1}dt=\sum_{n=1}^\infty \frac {c_n}{(z+1)^{\overline n}} 0e2πt12arctan2tdt=n=1(z+1)ncn

其中:

c n = 1 n ∫ 0 1 x n ‾ ( x − 1 2 ) d x c_n=\frac 1n\int_0^1x^{\overline n}(x-\frac 12)dx cn=n101xn(x21)dx

从中可以得出Stirling级数的一个收敛形式:

l n Γ ( z ) = ( z − 1 2 ) l n z − z + l n 2 π 2 + 1 12 ( z + 1 ) + 1 12 ( z + 1 ) ( z + 2 ) + 59 360 ( z + 1 ) ( z + 2 ) ( z + 3 ) + 29 60 ( z + 1 ) ( z + 2 ) ( z + 3 ) ( z + 4 ) + ⋯ \mathsf {ln}\Gamma(z)=(z-\frac 12)\mathsf {ln}z-z+\frac {\mathsf {ln}2\pi}{2}+\frac 1{12(z+1)}+\frac 1{12(z+1)(z+2)}+\frac{59}{360(z+1)(z+2)(z+3)}+\frac {29}{60(z+1)(z+2)(z+3)(z+4)}+\cdots lnΓ(z)=(z21)lnzz+2ln2π+12(z+1)1+12(z+1)(z+2)1+360(z+1)(z+2)(z+3)59+60(z+1)(z+2)(z+3)(z+4)29+
他在R(z)>0时收敛

适用于计算器的形式

以下的近似值

Γ ≈ 2 π z ( z e z s i n h 1 z + 1 810 z 6 ) z \Gamma\approx\sqrt{\frac{2\pi}{z}}(\frac ze\sqrt{zsinh\frac1z+\frac 1{810z^6}})^z Γz2π (ezzsinhz1+810z61 )z

或:

2 l n Γ ( z ) ≈ l n ( 2 π ) − l n z + z [ 2 l n z + l n ( z s i n h 1 z + 1 810 z 6 ) − 2 ] 2\mathsf {ln}\Gamma(z)\approx\mathsf {ln}(2\pi)-\mathsf {ln}z+z[2\mathsf {ln}z+\mathsf {ln}(zsinh\frac 1z+\frac 1{810z^6})-2] 2lnΓ(z)ln(2π)lnz+z[2lnz+ln(zsinhz1+810z61)2]

可以通过把Stirling公式整理,并注意到它的幂级数与双曲正弦函数的泰勒级数展开式的相似性来得出。当 z z z的实数部分大于8时,这个近似值精确到小数点后8位。2002年,Robert H. Windschitl建议计算 Γ ( z ) \Gamma(z) Γ(z)函数Gergo Nemes在2007年提出了一个近似公式,它的精确度与Windschitl的公式相等,但更加简单:

Γ ( z ) ≈ 2 π z [ 1 e ( z + 1 12 z − 1 10 z ) ] z \Gamma (z)\approx \sqrt{\frac {2\pi}{z}}[\frac 1e(z+\frac 1{12z-\frac 1{10z}})]^z Γ(z)z2π [e1(z+12z10z11)]z

或:

l n Γ ( z ) ≈ 1 2 [ l n ( 2 π ) − l n z ] + z [ l n ( z + + 1 12 z − 1 10 z ) − 1 ] \mathsf {ln}\Gamma (z)\approx\frac 12 [\mathsf {ln}(2\pi)-\mathsf {ln}z]+z[\mathsf {ln}(z++\frac 1{12z-\frac 1{10z}})-1] lnΓ(z)21[ln(2π)lnz]+z[ln(z++12z10z11)1]

这个到后面全部都是Wikipedia上抄的了,因为不知道怎么总结了,就选择直接把他手打了一份,就当练习Markdown编辑器了,立个flag,把这里面的一些 名词都手打一遍,看一遍。今天就这样了吧,有点醉or β \beta β

你可能感兴趣的:(数学科普)