program-dog

2017年5月16日星期二

求解n!的近似,斯特林公式(Stirling)的推导

在排列组合中,n!的求解是不厌其烦的被用到,用高性能的计算机一个一个的求解也会花费O(n)的时间。有没有一种办法找到一个近似于n!的公式呢?下面的推导过程可能很low,但是蕴涵的数学思想还是值得学习的。 本文整理自台湾蔡聰明老师。

高估或者低估

只需要找到an,使得 limnn!an=1,  记做n!an.
观察n!=n(n1)(n2)321,想要估计它的值,采用高估策略很简单,每个因子用n代表, an=nnnn个=nn
显然,limnn!nn=0,改造(2),取12使其变小: an=n2n2n2n个=(n2)n=nn2n
现在令 bn=n!(n2)n
如果limnbn=1,那么我们就证明了an=(n2)nn!的逼近了。 由 nn!<n+(n1)+(n2)++2+1n=(n+1)n2n=n+12n2
n>4时, n!<(n2)n
也就是说(n2)n高估了n!

高估或着低估了多少?

我们想得到bn=1的估值,但是我们很难一眼看出bn是多少。先观察估值为1的情况,假设有正数列Sn,并且limn=SR其中S0,则 limnSn+1Sn=1
现在考虑(7)不成立的情况, {limnSn=0limnSn=limnSn不存在
如果(7)成立,则(Sn)可能收敛也可能发散。现在计算 limnbn+1bn=(n+1)!(n+12)n+1(n2)nn!=limn2(1+1n)n<2e1
根据 (8), 则(9)为0。我们观察到,只需要把2替换成e,则9为1。重新取 an=(ne)n
则有 cn=n!(ne)n
则有 limncn+1cn=(n+1)!(n+1e)n+1(ne)nn!=limne(1+1n)n=ee=1
虽然如此,我们依然不知道limncn=1是否成立。由(9)和(12)可知, (n+1)!n!(n+1e)n+1(ne)n2e(n+12)n+1(n2)n
所以有等比关系, (n+1e)n+1(ne)n<(n+1)!n!<(n+12)n+1(n2)n
因此,可以知道 {n!<(n2)n,  n6(ne)n<n!,  nNn!<(n+12)n,  n2
看来我们又低估n!。求cn的极限 limncn=n!(en)n=β,  β(1,+]
但是β是多少呢?

Wallis公式

21232n2n12n2n+1=π2
或者 limnto(2nn!)4((2n)!)2(2n+1)=π2
或者 limn22n(n!)2(2n)!n=π
cn=n!(ne)n=n!ennn
n!=cnnnen
从而 (2n)!=c2n(2n)2ne2n
代入Wallis公式 limn22ncnn2ne2nc2n(2n)2ne2nn=π
也就是 limnc2nc2nn=π
如果limn=β是有限的,则有0=π的荒谬结论,所以, limncn=limnn!(ne)n=
总之,(ne)n低估了(n!)

接近真理

我们再加一个n试一试 an=(ne)nn
dn=n!(ne)nn
易知其为正递减数列,故limndn=r存在,且0r<。令r0,则由Wallis知 =π。所以limndn=0。也就是说,(ne)nn高估了n!。观察(24),含有n因子,我们在cn的基础上再高估n试试, an=(ne)nn
现在有 un=n!(ne)nn
是一个递减正数列,考虑 unun+1>1
因此limn=L存在,并且0L<,如果L=0,则必须继续估计,现在将其重新代入Wallis公式 limn22n(un(ne)nn)2u2n(2ne)2n2nn=π
化简 limnu2nu2n=2π
limnun=2π
也就是说 n!2πnnnen

下面是pdf版本

没有评论 :

发表评论