Stirling 近似 学習ノート
Stirling 近似について使用機会があり得ることを納得したのでノートにまとめる。 以下、$n$ は自然数とする。
概要
- Stirling 近似の公式は $n$ の階乗の計算を近似する公式だ。
- 近似公式は複数ある。$n$ の大きさによって使い分ける。
$n$ が十分大きいとき
$n!$ の対数をとって $\infty$ まで積分することで近似する。 これを近似と主張することは高校数学の範囲で納得できると思う。
\[\begin{aligned} n! &= n(n-1)\dotsb2\cdot1.\\ \log n! &= \sum_{k = 1}^n \log k\\ &\approx \int_1^n\!\log x\,\mathrm dx\\ &= [x\log x]_1^n - \int_1^n\!1\,\mathrm dx\\ &= n\log n - n + 1\\ &\approx n\log n - n. \end{aligned}\]要するに $y = \log x$ のグラフと $x$ 軸との間の図形の面積で近似している。 厳密に言えば積分範囲は ${[1, n + 1]}$ ではあるのだが、$n$ が十分大きいという仮定なので $n$ も $n + 1$ も変わらないという姿勢だ。
\[\tag*{$\spadesuit0$} \log n! \approx n\log n - n.\]以上が簡単な方の Stirling 近似公式だ。対数を挟むので使いにくいかもしれない。
$n$ がそれほど大きくないとき
$n$ が上記近似が通用するほどは大きくないときはどうするか。 $\Gamma$ 関数を採用する。これはもともと階乗の連続関数化という目的で発明されたものらしい。
\[\begin{aligned} \Gamma(x) \coloneqq \int_0^\infty\!s^{x - 1}\mathrm{e}^{-s}\,\mathrm ds. \end{aligned}\]この関数が
- $s > 0$ で収束すること
- $\Gamma(x + 1) = x\Gamma(x)$ を満たすこと
などの基本的な性質は微分積分 II で習ったとおりだ。この二つ目の性質が階乗と関係する。 すなわち $\Gamma(n + 1) = n!$ だ。
\[\tag*{$\spadesuit1$} n! = \int_0^\infty\!s^n \mathrm{e}^{-s}\,\mathrm ds.\]以下、$\Gamma$ 関数を変形して近似式を得る。
被積分関数の近似
被積分関数 $s^n \mathrm{e}^{-s}$ を近似することを考える。まず対数をとる:
\[\begin{aligned} \log s^n \mathrm{e}^{-s} = n\log s - s. \end{aligned}\]対数関数に対して Taylor 展開を適用して、高次の項を切り捨てることで近似を実現したい。 そのために $\log s$ の形は不向きなので、展開できるような変数変換を施す。平行移動でいい。
\[s = n + \xi\] \[\begin{aligned} \log s^n \mathrm{e}^{-s} &= n\log s - s\\ &= n\log(n + \xi) - (n + \xi)\\ &= n\log n\!\left(1 + \frac{\xi}{n}\right) - (n + \xi)\\ &= n\log n + n\log\!\left(1 + \frac{\xi}{n}\right) - (n + \xi)\\ &= n\log n + n\sum_{k = 1}^\infty\frac{(-1)^{k-1}}{k}\left(\frac{\xi}{n}\right)^k - (n + \xi)\\ &= n\log n + \left(\xi - \frac{\xi^2}{2n} + O\!\left(\frac{1}{\xi^2}\right)\!\right) - (n + \xi)\\ &\approx n\log n - \frac{\xi^2}{2n} - n. \end{aligned}\]対数関数を外すと:
\[\begin{aligned} s^n \mathrm{e}^{-s} &= \exp\left(n\log n - \frac{\xi^2}{2n} - n\right)\\ &= n^n \mathrm{e}^{-n}\exp\left(- \frac{\xi^2}{2n}\right). \end{aligned}\]これで積分 $\spadesuit1$ を近似する準備が整った。
$\Gamma$ 積分を近似する
以上を用いて積分 $\spadesuit1$ を近似式に書き換える:
\[\def\E{ \exp\!\left(- \frac{\xi^2}{2n}\right) } \begin{aligned} n! &= \int_0^\infty\!s^n \mathrm{e}^{-s}\,\mathrm ds\\ &= \int_{-n}^\infty\!n^n \mathrm{e}^{-n}\E\mathrm d\xi\\ &= n^n \mathrm{e}^{-n} \int_{-n}^\infty\!\E\mathrm d\xi\\ \end{aligned}\]$n$ が十分大きいことと $\exp(\xi)$ の性質を利用して、積分区間の下端を $-\infty$ とおいてよい:
\[\def\E{ \exp\!\left(- \frac{\xi^2}{2n}\right) } \begin{aligned} \int_{-n}^\infty\!\E\mathrm d\xi &\approx \int_{-\infty}^\infty\!\E\mathrm d\xi\\ &= \sqrt{2n\pi}.\\ \therefore n! &\approx n^n \mathrm{e}^{-n} \sqrt{2n \pi}\\ &= \sqrt{2\pi n}\left(\frac{n}{\mathrm{e}}\right)^n. \end{aligned}\]以上により次の Stirling 近似公式を得る:
\[n! \approx \sqrt{2\pi n}\left(\frac{n}{\mathrm{e}}\right)^n.\]なお、この両辺の対数を取ると、$\spadesuit0$ と実質的に同じものが得られる:
\[\begin{aligned} \log n! &\approx \log\sqrt{2\pi n} + n(\log n - 1)\\ &\approx (n + \frac{1}{2})\log n - n + 0.918935332\\ &\approx n\log n - n. \end{aligned}\]急所をまとめておく:
- 巨大な数には何はさておき $\log$ をとる。
- $\log$ の Taylor 展開ができる形に変数変換をする。
- 絶対値の小さい項を捨てる。
- Gauss 積分を忘れないこと:
参考資料
- 村上雅人著『なるほど確率論』
- Stirling’s approximation - Wikipedia