Skip to content

Stirling公式 ​

Stirling公式 ​

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

  • 斯特林公式为

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

Stirling公式的推导 ​

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

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

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

n!=∏k=1nk=exp⁡(∑k=1nlog⁡k).

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

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

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

log⁡(k)<∫kk+1log⁡(x)dx<log⁡(k+1),∀k∈N.

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

∑k=1nlog⁡(k)<∫1n+1log⁡(x)dx<∑k=1n+1log⁡(k),∀n∈N.

即

∑k=1nlog⁡(k)<(n+1)log⁡(n+1)−n<log⁡(n+1)+∑k=1nlog⁡(k),∀n∈N.

整理后可有

nlog⁡(n+1)−n<∑k=1nlog⁡(k)<(n+1)log⁡(n+1)−n,∀n∈N.

因此

(n+1)nen<n!<(n+1)n+1en,∀n∈N.

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

精细化结果——梯形公式 ​

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

log⁡(x)>log⁡(k+1)−log⁡(k)(k+1)−k(x−k)+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)(1n−12n2+13n3))≤e−112n2<1.

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

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

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

n!=ann(ne)n,

取对数后为

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

即

1−log⁡(an)=∫1nlog⁡(x)dx−(∑k=1nlog⁡(k)−12log⁡(n)),

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

limn→∞an=0⇔limn→∞bn=+∞⇔∑n=1∞cn=+∞.

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

cn=∫n−1n(log⁡(x)−log⁡(n)−log⁡(n−1)n−(n−1)(x−n)+log⁡(n))dx,

记

gn(x)=log⁡(x)−log⁡(n)−log⁡(n−1)n−(n−1)(x−n)+log⁡(n),

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

gn(x)<gn′(n)(x−n)=(1n+log⁡(1−1n))(x−n).

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

cn=∫n−1ngn(x)dx<∫n−1ngn′(n)(x−n)dx=−12(1n+log⁡(1−1n)).

由Taylor公式的Lagrange余项,

log⁡(1−1n)=−1n−12n2−ξ33,0<ξ<1n.

因此

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

这说明

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

是收敛的. 这也说明

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

从而给出 an 的一个下界

an>exp⁡(1−118π2).

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

limn→∞n!n(ne)n=c,0<c<+∞.

甚至给出更精细的范围

limn→∞n!n(ne)n=c,1−118π2<log⁡(c)<1.

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

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

事实上, 由Wallis公式

π2=limn→∞((2n)!!(2n−1)!!)212n+1=limn→∞(((2n)!!)2(2n)!)212n=limn→∞(22n(n!)2(2n)!)212n

我们知道

limn→∞22n(n!)2n(2n)!=π.

记

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

并把

n!=ann(ne)n

代入 dn 的表达式可以得到

dn=22n(n!)2n(2n)!=22n(an)2n2n+1e−2nn2na2n(2n)2ne−2n=an22a2n,

而 an→c>0,dn→π , 在上式两端令n→∞ 得到

c22c=π,

这说明

c=2π.