Skip to content

Stirling公式

Stirling公式

  • 斯特林公式(英语:Stirling's formula)是一条用来取n阶乘近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特林公式十分好用,而且,即使在n很小的时候,斯特林公式的取值已经十分准确。

  • 斯特林公式为

n!2πn(ne)n
  • 更加精确地,有
limnn!2πn(ne)n=1limnenn!nnn=2π
  • 事实上,在高等数学中,只需要知道下式即可。上述的内容,不需要引入Wallis公式便能得到结论。
limnn!n(ne)n=c,cR+

Stirling公式的推导

参见Stirling公式的一些思考 - 知乎

阶乘大小估计——积分的矩形公式

我们先从 n! 大小的估计出发. 阶乘实际为累乘,数学上对累乘处理的工具十分少,一般都会选择取对数转换为累加,然后借助已有工具处理。

n!=k=1nk=exp(k=1nlogk).

因此只需要估计 k=1nlogk的值就可以了。而对于这种简单累加,很容易想到积分。因此考虑函数 log(x)[1,n]的积分与累加的大小比较。由于log(x) 是单调递增的函数,所以在任意的 [k,k+1]区间上有

log(k)<log(x)<log(k+1),k<x<k+1.

两边从kk+1积分,得到不等式

log(k)<kk+1log(x)dx<log(k+1),kN.

对 k 从 1 到 n 这 n 个不等式进行累加得到

k=1nlog(k)<1n+1log(x)dx<k=1n+1log(k),nN.

k=1nlog(k)<(n+1)log(n+1)n<log(n+1)+k=1nlog(k),nN.

整理后可有

nlog(n+1)n<k=1nlog(k)<(n+1)log(n+1)n,nN.

因此

(n+1)nen<n!<(n+1)n+1en,nN.

这已经是一个初步的比较好看的结果了. 但精度还是不够, 得到这个公式本质上是用矩形公式逼近 log(x) 的积分. 我们知道, log(x)是一个单调递增的凹函数, 如果改用梯形公式, 则精度会提高很多.

精细化结果——梯形公式

[k,k+1] 上, 由于log(x) 是一个凹函数, 即函数图像在割线之上, 因此

log(x)>log(k+1)log(k)(k+1)k(xk)+log(k),k<x<k+1.

两边积分得到

kk+1log(x)dx>12(log(k)+log(k+1)).

k 累加得到

1nlog(x)dx>k=1nlog(k)12log(n),

nlog(n)n+1>k=1nlog(k)12log(n),

整理后再取回指数就可以得到

0<n!n(ne)n<e.

我们记

an=n!n(ne)n,

an是一个有界数列, 只需要 an是单调的就可以知道an极限存在. 下面考察 an的单调性.

an+1an=e(1+1n)n+12<exp(1(n+12)log(1+1n))<exp(1(n+12)(1n12n2+13n3))e112n2<1.

因此 an+1<anan为单调递减的数列, 极限存在. 接下来只需要证明, 这个极限不是0就可以了. 这里回溯一下我们得到阶乘估计的方法: 积分的梯形公式. 因此需要估计梯形公式的误差.

梯形公式的误差估计——正项级数收敛判别法

设$$a_n\to c$$, 把阶乘表示为

n!=ann(ne)n,

取对数后为

k=1nlog(k)=log(an)+nlog(n)n+12log(n),

1log(an)=1nlog(x)dx(k=1nlog(k)12log(n)),

bn=1log(an),cn=bnbn1(b0=0) , 则此为梯形公式的误差公式, 那么

limnan=0limnbn=+n=1cn=+.

这就回归到了正项级数是否发散的判别上了. 这里

cn=n1n(log(x)log(n)log(n1)n(n1)(xn)+log(n))dx,

gn(x)=log(x)log(n)log(n1)n(n1)(xn)+log(n),

gn(n1)=gn(n)=0。注意到 gn(x)=1x2<0 , 因此gn(x)为凹函数, 函数图象在任意一条切线的下方, 因此

gn(x)<gn(n)(xn)=(1n+log(11n))(xn).

这样我们可以给出梯形公式误差的一个估计:

cn=n1ngn(x)dx<n1ngn(n)(xn)dx=12(1n+log(11n)).

由Taylor公式的Lagrange余项,

log(11n)=1n12n2ξ33,0<ξ<1n.

因此

cn<12(1n+log(11n))<14n2+13n3<13n2.(n>1)

这说明

n=1cn<n=1n13n2=π218

是收敛的. 这也说明

1log(an)=bn=k=1ncn<118π2,

从而给出 an 的一个下界

an>exp(1118π2).

这已经足以得到我们 (在这篇文章中) 需要的结论:

limnn!n(ne)n=c,0<c<+.

甚至给出更精细的范围

limnn!n(ne)n=c,1118π2<log(c)<1.

而证明c=2π 一般需要借助Wallis公式, 在一般的数学分析教科书中都可以查阅到.

Stirling公式——借助Wallis公式计算极限的值

事实上, 由Wallis公式

π2=limn((2n)!!(2n1)!!)212n+1=limn(((2n)!!)2(2n)!)212n=limn(22n(n!)2(2n)!)212n

我们知道

limn22n(n!)2n(2n)!=π.

dn=22n(n!)2n(2n)!,

并把

n!=ann(ne)n

代入 dn 的表达式可以得到

dn=22n(n!)2n(2n)!=22n(an)2n2n+1e2nn2na2n(2n)2ne2n=an22a2n,

anc>0,dnπ , 在上式两端令n 得到

c22c=π,

这说明

c=2π.