史特靈公式 (英語: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]}