斯特林公式 (英语: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 .}
在这种情况下,级数的误差总是与第一个省略掉的项异号,且最多同大小。
欲得出斯特林公式的一个收敛形式,我们必须计算:
∫
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. ISBN 0-521-58807-3
Viktor T. Toth. " Programmable Calculators: Calculators and the Gamma Function" . 2006 [2018-11-18 ] . (原始内容 存档于2007-02-23). , 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, [...]