数式処理ソフト DERIVE(デライブ) de ドライブ

10.n!に対するスターリングの公式

「おじさん。
数式処理ソフト DERIVE(デライブ)の7回目の記事の中でn!の近似式と実際の数字と少し違っているわね?」

「おー。ともちゃんか。うん、100!の例であるな。
LN(100!)≒363.7393755、一方、近似式からは、LN(100!)≒360.5170185となっているので、自然対数ベースで3程度違うの。対数でなくて実数に引き直して考えると真値/近似値≒25となるので、近似値より25倍ほど真値の方が大きいな」

「ずいぶん、ちがうじゃないの。もう少し、精度が上げられないの?」

「まあ、100!は、10の157乗という大きな数だからな。
大した違いではないとも言えるがのう。
しかし、より精度の高いスターリングの公式もあるのじゃよ。
n!≒√(2πn)×(n/e)^n×(1+1/(12n)+1/(288n^2)・・)というものであるな。
これにn=100を代入して、自然対数に直すと、363.7393755となるな。これだと、DERIVEの既定である10桁の有効数字の範囲内では、差が分からないのう。
有効数字を20桁として計算してみるか。
このときは、真値≒363.73937555556349014、近似値≒363.73937555824479820であるから、真値/近似値≒1.0000000026813080598となる。大したもんじゃ」

「すごーい。実際の100!の値と1ぐらいしか違わないのかしら」

「いやいや。それは、誤解じゃ。
真値は、なんといっても157桁の数なので、上の比率は、ずいぶんと1に近いようでも、実数の差は、1×10^148程度の違いがあるのじゃよ」

「なんだー」

「おいおい。10の157乗の数からみれば、10の148乗程度の数は、10^9(10億)分の1の違いだよ」

「まあ、そうかもね。ところで、スターリングの公式って、どうやって出すの」

「う~ん。そう来ると思ったな。精度の高い式は、階乗をガンマ関数という関数に拡張してから、複素積分の鞍点法というものを使って出すのじゃ。
ともちゃんには、ちと、難しいのう」

「じゃ、普通の方は?」

「うん。n!=n(n-1)・・1だから、n!=n^nΠ(1-k/n)で、k=0~n-1を動くので、LN(n)=nLN(n)+ΣLN(1-k/n)となるから、第1項は、すでに出ているの。問題は、第2項じゃな」

「第2項の和は、丁寧に書くと、0+LN(1-1/n)+LN(1-2/n)-・・LN(1-(n-1)/n)だわね」

「そう。第2項の級数の和は、このままでは求まらんの」

「じゃ、どうするの」

「こういうときは、級数を定積分で近似するのが定法じゃな。
n×ΣLN(1-k/n)(1/n)と書いて、nが大きいので、1/n≒dxと近似し、n×∫LN(1-x)dxとするのじゃ。
積分範囲は、0~1。この積分は、n×(-1)となるが、DERIVEでの方法は、解析メニューから積分を選択して、定積分を指定し、変域を指示すればよいので、ともちゃんにも、すぐ分かるじゃろう」

「ふ~ん。なるほど。これで、LN(n!)≒nLN(n)-nとなるわけなのね。
精密な公式との差は、級数を定積分で近似するのが粗いわけね?」

「まあ、そうも言えるな。
試みにΣLN(1-k/n)のkとk+1との間でさっきの定積分では、LN(1-k/n)で代表してそれを元に、LN(1-x)と近似してしまったのじゃが、LN(1-k/n)とLN(1-k/n-1/n)との間の平均値で代表することを考えてみよう。
1/nをΔとして2つ目の項をテイラー展開してご覧」

「え~と。DERIVEに頼っちゃおと。Δの1次までで、LN(1-k/n)+nΔ/(k-n)となるわね」

「そう。DERIVEでテイラー展開するときは、解析メニューからテイラー展開を選べばよい」

「これからどうするのかしら」

「うん。2つの間の平均値で補間するのだから、nΣLN(1-k/n)(1/n)+(1/2)Σ(1/n)/(n/k-n)なので、これを定積分で近似すると、∫LN(1-x)dx+(1/2)∫1/(x-1)dxとなるの。定積分の積分範囲は、0~1-(1/n)でよい。
結果が複素数になって驚くが、全体をまとめて、指数関数で元に戻してみるとn!≒n^(n+1/2)×e^(-n+1)となるな」

「すると、LN(n!)≒(n+1/2)LN(n)-n+1となってくるのね。
n=100として計算してみると、LN(100!)≒363.8196036となるから、真値と比較すると、3桁目まで合ってる!」

「我々の式は、n!≒e√n)×(n/e)^nと変形し、精密な式と比較してみると、精密な方は、初項の係数が√2π≒2.506であるのに対して、我々の式は、e≒2.718と少し異なってはおる。とはいっても、初等的な考察でここまで来たのだから、とりあえず、よしとして、お茶でも入れて、一服するかの」