史特靈公式()是一條用來取n階乘近似值的數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以史特靈公式十分好用,而且,即使在n很小的時候,史特靈公式的取值已經十分準確。這個公式以的名字命名,雖然亞伯拉罕·棣美弗早於史特靈提出了一個類似的公式,但結果較不精確。
史特靈公式为:
:n! \approx \sqrt{2\pi n}\, \left(\frac{n}{e}\right)^{n}.
这就是说,对于足够大的整数n,这两个数互为近似值。更加精确地:
:\lim_{n \rightarrow \infty} {\frac{n!}{\sqrt{2\pi n}\, \left(\frac{n}{e}\right)^{n}}} = 1
或
:\lim_{n \rightarrow \infty} {\frac{e^n\, n!}{n^n \sqrt{n}}} = \sqrt{2 \pi}.
历史
这个公式是亚伯拉罕·棣莫弗首先发现的,形式为:
:\displaystyle n! \approx c n^{n+\frac{1}{2}} e^{-n},其中c為常數。
证明了公式中c=\sqrt{2\pi},約為。更加精确的形式是雅克·比内发现的。
推导
方法一
这个公式,以及误差的估计,可以推导如下。首先不直接估计n!,而是考虑它的自然对数:
:\ln (n!) = \ln 1 + \ln 2 + \cdots + \ln n.
即:
:\ln (n!) - \frac{\ln n}{2} = \ln 1 + \ln 2 + \cdots + \ln n - \frac{\ln n}{2}.
这个方程的右面是积分\int_1^n \ln(x)\,dx = n \ln n - n + 1的近似值(利用梯形法则),而它的误差由欧拉-麦克劳林公式给出:
:\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}.
其中Bk是伯努利数,Rm,n是欧拉-麦克劳林公式中的余项。取极限,可得:
:\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。由于欧拉-麦克劳林公式中的余项Rm,n满足:
:R_{m,n} = \lim_{n \to \infty} R_{m,n} + O \left( \frac{1}{n^{2m-1}} \right),
其中用到了大O符号,与以上的方程结合,便得出对数形式的近似公式:
:\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,便得到了一个含有未知数ey的公式。当m=1时,公式为:
:n! = e^{y} \sqrt{n}~{\left( \frac{n}{e} \right)}^n \left[ 1 + O \left( \frac{1}{n} \right) \right]
将上述表达式代入沃利斯乘积公式,并令n趋于无穷,便可以得出ey(e^y = \sqrt{2 \pi})。因此,我们便得出斯特林公式:
:n! = \sqrt{2 \pi n}~{\left( \frac{n}{e} \right)}^n \left[ 1 + O \left( \frac{1}{n} \right) \right]
这个公式也可以反复使用分部积分法来得出,首项可以通过最速下降法得到。把以下的和
:\ln(n!) = \sum_{j=1}^{n} \ln j
用积分近似代替,可以得出不含\sqrt{2 \pi n}的因子的斯特林公式(这个因子通常在实际应用中无关):
:\sum_{j=1}^{n} \ln j \approx \int_1^n \ln x \, dx = n\ln n - n + 1.
方法二
考虑如下近似关系:
:\begin{align}\ln n!&=\sum_{k=1}^n\ln k\\&\approx\int_1^n\ln x\mathrm dx=n\ln n-n+1\\&\approx n\ln n-n\end{align}
以及阶乘的积分形式(Γ函数):
:n!=\int_0^\infty\mathrm e^{-x}x^n\mathrm dx
其中被积函数取对数后求导结果可写成:
:\frac{\mathrm d}{\mathrm dx}\ln(\mathrm e^{-x}x^n)=\frac{\mathrm d}{\mathrm dx}(n\ln x-x)=\frac nx-1
因此被积函数只有在x=n附近才趋于平稳,现令x\equiv n+\xi且\xi\ll n,并改写成如下形式:
:\ln(x^n\mathrm e^{-x})=n\ln x-x=n\ln(n+\xi)-(n+\xi)
于是有:
:\begin{align}\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{align}
因此可以得到:
:\begin{align}\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{align}
两边同时作指数函数运算,变成:
:\begin{align}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{align}
代入到阶乘的积分表示形式,得到:
:\begin{align}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{align}
约等号后侧得到的是高斯积分的形式,计算该积分得出斯特林公式:
:n!\approx n^n\mathrm e^{-n}\sqrt{2\pi n}
收敛速率和误差估计
更加精确的近似公式为:
:n! = \sqrt{2 \pi n} \; \left(\frac{n}{e}\right)^{n}e^{\lambda_n}
其中:
:\frac{1}{12n+1}
斯特林公式实际上是以下级数(现在称为斯特林级数)的第一个近似值:
:
n!=\sqrt{2\pi n}\left({n\over e}\right)^n
\left(
1
+{1\over12n}
+{1\over288n^2}
-{139\over51840n^3}
-{571\over2488320n^4}
- \cdots
\right).
当n \to \infty时,截断级数的误差等于第一个省略掉的项。这是渐近展开式的一个例子。它不是一个收敛级数;对于任何特殊值n,级数的准确性只在取有限个项时达到最大,如果再取更多的项,则准确性将变得越来越差。
阶乘的对数的渐近展开式也称为斯特林级数:
:
\ln n!=n\ln n - n + {1\over 2}\ln(2\pi n)
+{1\over12n}
-{1\over360n^3}
+{1\over1260n^5}
-{1\over 1680n^7}
+\cdots.
在这种情况下,级数的误差总是与第一个省略掉的项异号,且最多同大小。
伽玛函数的斯特林公式
对于所有正整数,有:
:n! = \Pi(n) = \Gamma(n+1).
然而,伽玛函数与阶乘不一样,它对于所有复数都有定义。尽管如此,斯特林公式仍然适用。如果\Re(z) > 0,那么:
:\ln \Gamma (z) = \left(z-\frac12\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 \Gamma (z) = \left(z-\frac12\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}}
其中Bn是第n个伯努利数。当|\arg z| ,其中ε是正数时,这个公式对于绝对值足够大的z是适用的,当使用了最初m个项时,误差项为O\left(z^{-m - \frac{1}{2}}\right)。对应的近似值可以写为:
:\Gamma(z) = \sqrt{\frac{2 \pi}{ z}}~{\left( \frac{z}{e} \right)}^z \left[ 1 + O \left( \frac{1}{z} \right) \right].
斯特林公式的收敛形式
欲得出斯特林公式的一个收敛形式,我们必须计算:
:\int_0^\infty \frac{2\arctan \frac{t}{z}}{\exp(2 \pi t)-1}\, dt
= \ln\Gamma (z) - \left( z-\frac12 \right) \ln z +z - \frac12\ln(2\pi).
一种方法是利用含有上升阶乘幂的级数。如果z^{\overline n} = z(z+1) \cdots (z+n-1),那么:
:\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 = \frac{1}{n} \int_0^1 x^{\overline n} \left( x-\frac12 \right) \, dx.
从中可以得出斯特林级数的一个收敛形式:
:\ln \Gamma (z) = \left( z-\frac12 \right) \ln z -z + \frac{\ln {2 \pi}}{2}
:::{} + \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
它在\Re(z)>0时收敛。
适用于计算器的形式
以下的近似值
:\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 \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的公式相等,但更加简单:
:\Gamma(z) \approx \sqrt{\frac{2 \pi}{z} } \left[ \frac{1}{e} \left( z + \frac{1}{12z- \frac{1}{10z}} \right) \right]^{z},
或
: \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
- , modified 2006
*
*
评论 (0)