Stirling 公式描述阶乘的渐近行为, 以 James Stirling 的名字命名. 常见的形式如下:n!∼2πn(en)n (n→+∞)注意符号 ∼ 表示渐近, 换言之其左右两项比值的极限为 1.
该公式的精度较高, 即便对较小的 n 也能得到 n! 不错的估计.
陈述和证明
Z+ 的情形
对 n∈Z+ 有n!=2πn(en)necn其中 cn 满足0<cn<12n1
证明. 对
n∈Z+ 定义数列
dn=log(n!)−(n+21)logn+n利用
Taylor 展开计算
dn−dn+1dn−dn+1==(22n+1)log(1−2n+111+2n+11)−1k=1∑∞2k+11⋅(2n+1)2k1于是放缩得到
0<dn−dn+1<k=1∑∞31⋅(2n+1)2k1=12n1−12(n+1)1故
dn 递减而
dn−12n1 递增. 下述极限存在
C=n→∞limdn=n→∞limdn−12n1更精确地有
0<cn=dn−C<12n1现只要证明
C=21log(2π)而根据
Wallis 公式, 我们有
n→∞lim∏k=1n((2k−1)⋅(2k+1))∏k=1n(2k⋅2k)=2πn→∞lim(2n)!2n+1(2nn!)2=2eC=2π于是我们完成了证明.
C 的情形
设 z∈C 满足 −π+δ<argz<π−δ, 则logΓ(z)=(z−21)logz−z+log2π+O(∣z∣−1),其中 O 中的常数只依赖于 δ.
将正整数的证明过程稍作修改即可得到 argz∈(−π+δ,π−δ) 时 Γ 函数版本的 Stirling 公式. 详见 Γ 函数.
渐近版本
参见: Bernoulli 多项式
推导
给定 m∈Z+, 对 n∈Z+,n→+∞ 有log(n!)=(n+21)logn−n+21log(2π)+1≤k≤m∑2k(2k−1)n2k−1B2k+O(n2m+11)
证明. 根据
Euler–Maclaurin 公式, 我们有
log(n!)=1≤k≤n∑logk=∫1nlogxdx+21logn+∫1nxB1(x)dx=(n+21)logn−n+C1+∫1∞xB1(x)dx−∫n∞xB1(x)dx由前面的计算可知
C=21log(2π), 所以:
log(n!)=(n+21)logn−n+21log(2π)−∫n∞xB1(x)dx再根据幂函数的性质, 易知
q≥1 时总有:
dxqdqlogx=(−1)q−1(q−1)!x−q所以通过不断分部积分, 可知:
∫n∞xB1(x)dx=1≤k≤m∑(2k)!B2k(−1)2k(2k−2)!x1−2k∣n∞+(2m+1)!(−1)2m+1−1(2m)!∫n∞x2m+1B2m+1(x)dx=−1≤k≤m∑2k(2k−1)n2k−1B2k+2m+11∫n∞x2m+1B2m+1(x)dx对于最后一项, 再做一次分部积分, 可知:
∫n∞x2m+1B2m+1(x)dx=−(2m+2)n2m+1B2m+2−2m+22m+1∫n∞x2m+2B2m+2(x)dx=O(n2m+11)+O(∫n∞x2m+2dx)=O(n2m+11)将这些式子合并便得结论.
值得注意的是, 在上述定理中虽然我们能得出给定任意精确阶的渐进公式, 但是对于一个固定的 n, 右端在 K→∞ 时并不收敛, 这是因为 Bernoulli 数的增长速度远远快于指数, 根据 Riemann ζ 函数在正偶数的取值我们知道B2k=(2π)2k(−1)k+1⋅2(2k)!ζ(2k), ζ(2k)→1, ∣B2k∣∼4πk(πek)2k这表明右边视作关于 k 的级数只有有限项会增加精度, 这样的级数一般被称作渐近级数.
实用公式
根据渐近展开, 我们保留前四项即得到
log(n!)∼(n+21)logn−n+21log(2π)+12n1−360n31+1260n51−1680n71+⋯n!∼2πn(en)n(1+12n1+288n21−51840n3139−2488320n4571+⋯)
只要保证对应展开式中有足够项的系数一致就能得到较好的实用逼近, 例如 Gergő Nemes 在 2007 年提出的
Γ(z)≈z2π(e1(z+12z−10z11))z
而 Srinivasa Ramanujan 提出的估计是
Γ(1+x)≈π(ex)x(8x3+4x2+x+301)61 (x≥0)
相关条目
Stirling 公式 • 英文 Stirling’s formula • 德文 Stirlingsformel • 法文 formule de Stirling