斯特林公式 (Stirling's formula)是一条用来取n阶乘 近似值 的数学 公式 。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特林公式十分好用,而且,即使在n很小的时候,斯特林公式的取值已经十分准确。这个公式以詹姆斯·斯特林 的名字命名,虽然亚伯拉罕·棣美弗 早于斯特林提出了一个类似的公式,但结果较不精确。[1] [2] [3]
当
n 增加时,(ln
n !)与o (
n ln
n −
n )之比趋于1
n
!
{\displaystyle n!}
(蓝色)、
2
π
n
(
n
e
)
n
{\displaystyle {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}}
(橘色),数字越大
2
π
n
(
n
e
)
n
,
{\displaystyle {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n},}
会越趋近
n
!
{\displaystyle n!}
。但
2
π
n
(
n
e
)
n
{\displaystyle {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}}
在负值则会因为出现虚数而无法使用
斯特林公式为:
n
!
≈
2
π
n
(
n
e
)
n
.
{\displaystyle n!\approx {\sqrt {2\pi n}}\,\left({\frac {n}{e}}\right)^{n}.}
这就是说,对于足够大的整数n ,这两个数互为近似值。更加精确地:
lim
n
→
∞
n
!
2
π
n
(
n
e
)
n
=
1
{\displaystyle \lim _{n\rightarrow \infty }{\frac {n!}{{\sqrt {2\pi n}}\,\left({\frac {n}{e}}\right)^{n}}}=1}
或
lim
n
→
∞
e
n
n
!
n
n
n
=
2
π
.
{\displaystyle \lim _{n\rightarrow \infty }{\frac {e^{n}\,n!}{n^{n}{\sqrt {n}}}}={\sqrt {2\pi }}.}
历史
这个公式是亚伯拉罕·棣莫弗 首先发现的,形式为:
n
!
≈
c
n
n
+
1
2
e
−
n
{\displaystyle \displaystyle n!\approx cn^{n+{\frac {1}{2}}}e^{-n}}
,其中c为常数。斯特林 证明了公式中
c
=
2
π
{\displaystyle c={\sqrt {2\pi }}}
,约为2.506628274631。更加精确的形式是雅克·比内 发现的。
推导
方法一
这个公式,以及误差的估计,可以推导如下。首先不直接估计n !,而是考虑它的自然对数 :
ln
(
n
!
)
=
ln
1
+
ln
2
+
⋯
+
ln
n
.
{\displaystyle \ln(n!)=\ln 1+\ln 2+\cdots +\ln n.}
即:
ln
(
n
!
)
−
ln
n
2
=
ln
1
+
ln
2
+
⋯
+
ln
n
−
ln
n
2
.
{\displaystyle \ln(n!)-{\frac {\ln n}{2}}=\ln 1+\ln 2+\cdots +\ln n-{\frac {\ln n}{2}}.}
这个方程的右面是积分
∫
1
n
ln
(
x
)
d
x
=
n
ln
n
−
n
+
1
{\displaystyle \int _{1}^{n}\ln(x)\,dx=n\ln n-n+1}
的近似值(利用梯形法则 ),而它的误差由欧拉-麦克劳林公式 给出:
ln
(
n
!
)
−
ln
n
2
=
ln
1
+
ln
2
+
⋯
+
ln
(
n
−
1
)
+
ln
n
2
=
n
ln
n
−
n
+
1
+
∑
k
=
2
m
B
k
(
−
1
)
k
k
(
k
−
1
)
(
1
n
k
−
1
−
1
)
+
R
m
,
n
.
{\displaystyle \ln(n!)-{\frac {\ln n}{2}}=\ln 1+\ln 2+\cdots +\ln(n-1)+{\frac {\ln n}{2}}=n\ln n-n+1+\sum _{k=2}^{m}{\frac {B_{k}{(-1)}^{k}}{k(k-1)}}\left({\frac {1}{n^{k-1}}}-1\right)+R_{m,n}.}
其中B k 是伯努利数 ,R m,n 是欧拉-麦克劳林公式中的余项。取极限,可得:
lim
n
→
∞
(
ln
n
!
−
n
ln
n
+
n
−
ln
n
2
)
=
1
−
∑
k
=
2
m
B
k
(
−
1
)
k
k
(
k
−
1
)
+
lim
n
→
∞
R
m
,
n
.
{\displaystyle \lim _{n\to \infty }\left(\ln n!-n\ln n+n-{\frac {\ln n}{2}}\right)=1-\sum _{k=2}^{m}{\frac {B_{k}{(-1)}^{k}}{k(k-1)}}+\lim _{n\to \infty }R_{m,n}.}
把这个极限记为y 。由于欧拉-麦克劳林公式中的余项R m ,n 满足:
R
m
,
n
=
lim
n
→
∞
R
m
,
n
+
O
(
1
n
2
m
−
1
)
,
{\displaystyle R_{m,n}=\lim _{n\to \infty }R_{m,n}+O\left({\frac {1}{n^{2m-1}}}\right),}
其中用到了大O符号 ,与以上的方程结合,便得出对数形式的近似公式:
ln
n
!
=
n
ln
(
n
e
)
+
ln
n
2
+
y
+
∑
k
=
2
m
B
k
(
−
1
)
k
k
(
k
−
1
)
n
k
−
1
+
O
(
1
n
2
m
−
1
)
.
{\displaystyle \ln n!=n\ln \left({\frac {n}{e}}\right)+{\frac {\ln n}{2}}+y+\sum _{k=2}^{m}{\frac {B_{k}{(-1)}^{k}}{k(k-1)n^{k-1}}}+O\left({\frac {1}{n^{2m-1}}}\right).}
两边取指数,并选择任何正整数m ,便得到了一个含有未知数e y 的公式。当m =1 时,公式为:
n
!
=
e
y
n
(
n
e
)
n
[
1
+
O
(
1
n
)
]
{\displaystyle n!=e^{y}{\sqrt {n}}~{\left({\frac {n}{e}}\right)}^{n}\left[1+O\left({\frac {1}{n}}\right)\right]}
将上述表达式代入沃利斯乘积 公式,并令n 趋于无穷,便可以得出e y (
e
y
=
2
π
{\displaystyle e^{y}={\sqrt {2\pi }}}
)。因此,我们便得出斯特林公式:
n
!
=
2
π
n
(
n
e
)
n
[
1
+
O
(
1
n
)
]
{\displaystyle n!={\sqrt {2\pi n}}~{\left({\frac {n}{e}}\right)}^{n}\left[1+O\left({\frac {1}{n}}\right)\right]}
这个公式也可以反复使用分部积分法 来得出,首项可以通过最速下降法 得到。把以下的和
ln
(
n
!
)
=
∑
j
=
1
n
ln
j
{\displaystyle \ln(n!)=\sum _{j=1}^{n}\ln j}
用积分近似代替,可以得出不含
2
π
n
{\displaystyle {\sqrt {2\pi n}}}
的因子的斯特林公式(这个因子通常在实际应用中无关):
∑
j
=
1
n
ln
j
≈
∫
1
n
ln
x
d
x
=
n
ln
n
−
n
+
1.
{\displaystyle \sum _{j=1}^{n}\ln j\approx \int _{1}^{n}\ln x\,dx=n\ln n-n+1.}
方法二
考虑如下近似关系:
ln
n
!
=
∑
k
=
1
n
ln
k
≈
∫
1
n
ln
x
d
x
=
n
ln
n
−
n
+
1
≈
n
ln
n
−
n
{\displaystyle {\begin{aligned}\ln n!&=\sum _{k=1}^{n}\ln k\\&\approx \int _{1}^{n}\ln x\mathrm {d} x=n\ln n-n+1\\&\approx n\ln n-n\end{aligned}}}
以及阶乘的积分形式(Γ函数 ):
n
!
=
∫
0
∞
e
−
x
x
n
d
x
{\displaystyle n!=\int _{0}^{\infty }\mathrm {e} ^{-x}x^{n}\mathrm {d} x}
其中被积函数取对数后求导结果可写成:
d
d
x
ln
(
e
−
x
x
n
)
=
d
d
x
(
n
ln
x
−
x
)
=
n
x
−
1
{\displaystyle {\frac {\mathrm {d} }{\mathrm {d} x}}\ln(\mathrm {e} ^{-x}x^{n})={\frac {\mathrm {d} }{\mathrm {d} x}}(n\ln x-x)={\frac {n}{x}}-1}
因此被积函数只有在
x
=
n
{\displaystyle x=n}
附近才趋于平稳,现令
x
≡
n
+
ξ
{\displaystyle x\equiv n+\xi }
且
ξ
≪
n
{\displaystyle \xi \ll n}
,并改写成如下形式:
ln
(
x
n
e
−
x
)
=
n
ln
x
−
x
=
n
ln
(
n
+
ξ
)
−
(
n
+
ξ
)
{\displaystyle \ln(x^{n}\mathrm {e} ^{-x})=n\ln x-x=n\ln(n+\xi )-(n+\xi )}
于是有:
ln
(
n
+
ξ
)
=
ln
[
n
(
1
+
ξ
n
)
]
=
ln
n
+
ln
(
1
+
ξ
n
)
=
ln
n
+
ξ
n
−
ξ
2
2
n
2
+
⋯
{\displaystyle {\begin{aligned}\ln(n+\xi )&=\ln \left[n\left(1+{\frac {\xi }{n}}\right)\right]=\ln n+\ln \left(1+{\frac {\xi }{n}}\right)\\&=\ln n+{\frac {\xi }{n}}-{\frac {\xi ^{2}}{2n^{2}}}+\cdots \end{aligned}}}
因此可以得到:
ln
(
x
n
e
−
x
)
=
n
ln
(
n
+
ξ
)
−
(
n
+
ξ
)
=
n
ln
n
+
ξ
−
ξ
2
2
n
−
n
−
ξ
+
⋯
=
n
ln
n
−
n
−
ξ
2
2
n
+
⋯
{\displaystyle {\begin{aligned}\ln(x^{n}\mathrm {e} ^{-x})&=n\ln(n+\xi )-(n+\xi )\\&=n\ln n+\xi -{\frac {\xi ^{2}}{2n}}-n-\xi +\cdots \\&=n\ln n-n-{\frac {\xi ^{2}}{2n}}+\cdots \end{aligned}}}
两边同时作指数函数 运算,变成:
x
n
e
−
x
≈
e
n
ln
n
e
−
n
e
−
ξ
2
2
n
=
n
n
e
−
n
e
−
ξ
2
2
n
{\displaystyle {\begin{aligned}x^{n}\mathrm {e} ^{-x}&\approx \mathrm {e} ^{n\ln n}\mathrm {e} ^{-n}\mathrm {e} ^{-{\frac {\xi ^{2}}{2n}}}\\&=n^{n}\mathrm {e} ^{-n}\mathrm {e} ^{-{\frac {\xi ^{2}}{2n}}}\end{aligned}}}
代入到阶乘的积分表示形式,得到:
n
!
≈
∫
−
n
∞
n
n
e
−
n
e
−
ξ
2
2
n
d
ξ
≈
n
n
e
−
n
∫
−
∞
∞
e
−
ξ
2
2
n
d
ξ
{\displaystyle {\begin{aligned}n!&\approx \int _{-n}^{\infty }n^{n}\mathrm {e} ^{-n}\mathrm {e} ^{-{\frac {\xi ^{2}}{2n}}}\mathrm {d} \xi \\&\approx n^{n}\mathrm {e} ^{-n}\int _{-\infty }^{\infty }\mathrm {e} ^{-{\frac {\xi ^{2}}{2n}}}\mathrm {d} \xi \end{aligned}}}
约等号后侧得到的是高斯积分 的形式,计算该积分得出斯特林公式:
n
!
≈
n
n
e
−
n
2
π
n
{\displaystyle n!\approx n^{n}\mathrm {e} ^{-n}{\sqrt {2\pi n}}}
收敛速率和误差估计
y轴表示截断的斯特林级数的相对误差,x轴表示所使用的项数。
更加精确的近似公式为:
n
!
=
2
π
n
(
n
e
)
n
e
λ
n
{\displaystyle n!={\sqrt {2\pi n}}\;\left({\frac {n}{e}}\right)^{n}e^{\lambda _{n}}}
其中:
1
12
n
+
1
<
λ
n
<
1
12
n
.
{\displaystyle {\frac {1}{12n+1}}<\lambda _{n}<{\frac {1}{12n}}.}
斯特林公式实际上是以下级数(现在称为斯特林级数 )的第一个近似值:
n
!
=
2
π
n
(
n
e
)
n
(
1
+
1
12
n
+
1
288
n
2
−
139
51840
n
3
−
571
2488320
n
4
+
⋯
)
.
{\displaystyle n!={\sqrt {2\pi n}}\left({n \over e}\right)^{n}\left(1+{1 \over 12n}+{1 \over 288n^{2}}-{139 \over 51840n^{3}}-{571 \over 2488320n^{4}}+\cdots \right).}
当
n
→
∞
{\displaystyle n\to \infty }
时,截断级数的误差等于第一个省略掉的项。这是渐近展开式 的一个例子。它不是一个收敛级数 ;对于任何特殊值n ,级数的准确性只在取有限个项时达到最大,如果再取更多的项,则准确性将变得越来越差。
阶乘的对数的渐近展开式也称为斯特林级数:
ln
n
!
=
n
ln
n
−
n
+
1
2
ln
(
2
π
n
)
+
1
12
n
−
1
360
n
3
+
1
1260
n
5
−
1
1680
n
7
+
⋯
.
{\displaystyle \ln n!=n\ln n-n+{1 \over 2}\ln(2\pi n)+{1 \over 12n}-{1 \over 360n^{3}}+{1 \over 1260n^{5}}-{1 \over 1680n^{7}}+\cdots .}
在这种情况下,级数的误差总是与第一个省略掉的项异号,且最多同大小。
伽玛函数的斯特林公式
对于所有正整数,有:
n
!
=
Π
(
n
)
=
Γ
(
n
+
1
)
.
{\displaystyle n!=\Pi (n)=\Gamma (n+1).}
然而,伽玛函数 与阶乘不一样,它对于所有复数都有定义。尽管如此,斯特林公式仍然适用。如果
ℜ
(
z
)
>
0
{\displaystyle \Re (z)>0}
,那么:
ln
Γ
(
z
)
=
(
z
−
1
2
)
ln
z
−
z
+
ln
2
π
2
+
2
∫
0
∞
arctan
t
z
exp
(
2
π
t
)
−
1
d
t
.
{\displaystyle \ln \Gamma (z)=\left(z-{\frac {1}{2}}\right)\ln z-z+{\frac {\ln {2\pi }}{2}}+2\int _{0}^{\infty }{\frac {\arctan {\frac {t}{z}}}{\exp(2\pi t)-1}}\,dt.}
反复使用分部积分法,可得以下渐近展开式:
ln
Γ
(
z
)
=
(
z
−
1
2
)
ln
z
−
z
+
ln
2
π
2
+
∑
n
=
1
∞
(
−
1
)
n
−
1
B
n
2
n
(
2
n
−
1
)
z
2
n
−
1
{\displaystyle \ln \Gamma (z)=\left(z-{\frac {1}{2}}\right)\ln z-z+{\frac {\ln {2\pi }}{2}}+\sum _{n=1}^{\infty }{\frac {(-1)^{n-1}B_{n}}{2n(2n-1)z^{2n-1}}}}
其中B n 是第n个伯努利数 。当
|
arg
z
|
<
π
−
ϵ
{\displaystyle |\arg z|<\pi -\epsilon }
,其中ε是正数时,这个公式对于绝对值足够大的z 是适用的,当使用了最初m 个项时,误差项为
O
(
z
−
m
−
1
2
)
{\displaystyle O\left(z^{-m-{\frac {1}{2}}}\right)}
。对应的近似值可以写为:
Γ
(
z
)
=
2
π
z
(
z
e
)
z
[
1
+
O
(
1
z
)
]
.
{\displaystyle \Gamma (z)={\sqrt {\frac {2\pi }{z}}}~{\left({\frac {z}{e}}\right)}^{z}\left[1+O\left({\frac {1}{z}}\right)\right].}
斯特林公式的收敛形式
欲得出斯特林公式的一个收敛形式,我们必须计算:
∫
0
∞
2
arctan
t
z
exp
(
2
π
t
)
−
1
d
t
=
ln
Γ
(
z
)
−
(
z
−
1
2
)
ln
z
+
z
−
1
2
ln
(
2
π
)
.
{\displaystyle \int _{0}^{\infty }{\frac {2\arctan {\frac {t}{z}}}{\exp(2\pi t)-1}}\,dt=\ln \Gamma (z)-\left(z-{\frac {1}{2}}\right)\ln z+z-{\frac {1}{2}}\ln(2\pi ).}
一种方法是利用含有上升阶乘幂 的级数。如果
z
n
¯
=
z
(
z
+
1
)
⋯
(
z
+
n
−
1
)
{\displaystyle z^{\overline {n}}=z(z+1)\cdots (z+n-1)}
,那么:
∫
0
∞
2
arctan
t
z
exp
(
2
π
t
)
−
1
d
t
=
∑
n
=
1
∞
c
n
(
z
+
1
)
n
¯
{\displaystyle \int _{0}^{\infty }{\frac {2\arctan {\frac {t}{z}}}{\exp(2\pi t)-1}}\,dt=\sum _{n=1}^{\infty }{\frac {c_{n}}{(z+1)^{\overline {n}}}}}
其中:
c
n
=
1
n
∫
0
1
x
n
¯
(
x
−
1
2
)
d
x
.
{\displaystyle c_{n}={\frac {1}{n}}\int _{0}^{1}x^{\overline {n}}\left(x-{\frac {1}{2}}\right)\,dx.}
从中可以得出斯特林级数的一个收敛形式:
ln
Γ
(
z
)
=
(
z
−
1
2
)
ln
z
−
z
+
ln
2
π
2
{\displaystyle \ln \Gamma (z)=\left(z-{\frac {1}{2}}\right)\ln z-z+{\frac {\ln {2\pi }}{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
)
+
⋯
{\displaystyle {}+{\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 }
它在
ℜ
(
z
)
>
0
{\displaystyle \Re (z)>0}
时收敛。
适用于计算器的形式
以下的近似值
Γ
(
z
)
≈
2
π
z
(
z
e
z
sinh
1
z
+
1
810
z
6
)
z
,
{\displaystyle \Gamma (z)\approx {\sqrt {\frac {2\pi }{z}}}\left({\frac {z}{e}}{\sqrt {z\sinh {\frac {1}{z}}+{\frac {1}{810z^{6}}}}}\right)^{z},}
或
2
ln
Γ
(
z
)
≈
ln
(
2
π
)
−
ln
z
+
z
[
2
ln
z
+
ln
(
z
sinh
1
z
+
1
810
z
6
)
−
2
]
,
{\displaystyle 2\ln \Gamma (z)\approx \ln(2\pi )-\ln z+z\left[2\ln z+\ln \left(z\sinh {\frac {1}{z}}+{\frac {1}{810z^{6}}}\right)-2\right],}
可以通过把斯特林公式整理,并注意到它的幂级数与双曲正弦 函数的泰勒级数 展开式的相似性来得出。当z 的实数部分大于8时,这个近似值精确到小数点后8位。2002年,Robert H. Windschitl建议计算器用这个公式来计算伽玛函数。
Gergő Nemes在2007年提出了一个近似公式,它的精确度与Windschitl的公式相等,但更加简单:
Γ
(
z
)
≈
2
π
z
[
1
e
(
z
+
1
12
z
−
1
10
z
)
]
z
,
{\displaystyle \Gamma (z)\approx {\sqrt {\frac {2\pi }{z}}}\left[{\frac {1}{e}}\left(z+{\frac {1}{12z-{\frac {1}{10z}}}}\right)\right]^{z},}
或
ln
Γ
(
z
)
≈
1
2
[
ln
(
2
π
)
−
ln
z
]
+
z
[
ln
(
z
+
1
12
z
−
1
10
z
)
−
1
]
{\displaystyle \ln \Gamma (z)\approx {\frac {1}{2}}\left[\ln(2\pi )-\ln z\right]+z\left[\ln \left(z+{\frac {1}{12z-{\frac {1}{10z}}}}\right)-1\right]}
参考文献
Abramowitz, M. and Stegun, I., Handbook of Mathematical Functions , http://www.math.hkbu.edu.hk/support/aands/toc.htm( 页面存档备份 ,存于互联网档案馆 )
夏慧异,章家顺, 斯特林公式在高等数学中的应用 , http://ordostsg.org.cn:1080/KCMS/detail/detail.aspx?filename=XUSJ200904014&dbcode=CJFR&dbname=
Paris, R. B., and Kaminsky, D., Asymptotics and the Mellin-Barnes Integrals , Cambridge University Press, 2001
Whittaker, E. T., and Watson, G. N., A Course in Modern Analysis , fourth edition, Cambridge University Press, 1963. , modified 2006
埃里克·韦斯坦因. Stirling's Approximation . MathWorld .
Stirling's approximation at PlanetMath .^ Dutka, Jacques, The early history of the factorial function, Archive for History of Exact Sciences , 1991, 43 (3): 225–249, doi:10.1007/BF00389433
^ Le Cam, L. , The central limit theorem around 1935, Statistical Science, 1986, 1 (1): 78–96, JSTOR 2245503 , MR 0833276 , doi:10.1214/ss/1177013818 ; see p. 81, "The result, obtained using a formula originally proved by de Moivre but now called Stirling's formula, occurs in his 'Doctrine of Chances' of 1733."
^ Pearson, Karl, Historical note on the origin of the normal curve of errors, Biometrika, 1924, 16 (3/4): 402–404 [p. 403], JSTOR 2331714 , doi:10.2307/2331714 , I consider that the fact that Stirling showed that De Moivre's arithmetical constant was
2
π
{\displaystyle {\sqrt {2\pi }}}
does not entitle him to claim the theorem, [...]