対数ガンマ関数 gammaln は重要な関数です。その関数の精度が,思わしくないのです。

階乗を計算するときに n! = exp(gammaln(n+1)) という関係式を使います。
n が大きくなればすぐにコンピュータでは扱いきれないほどの大きな値になるので,階乗を直接使うのではなくてその loge を取った値で途中の計算をして,最後に exp を使って最終的な答えを得るというように使うことが多いのですが。。。

第2列目と第3列目は同じ式が入っていて,表示形式が違うだけです。計算式を最初のセルに入力して,コピーすると第2列のようになります。n=0, 1 のときの gammaln(n+1) の計算結果がマイナスの値になっているという困ったちゃんぶりです。

第3列目は,表示桁数を増やす操作をしたものです。なぜか理由は不明ですが "_" などという表示になっています。

問題点がより明白になるのは第4列です。コンピュータは有効桁が15,6桁しか扱えないということは当然なのですが,例えば 10! は整数値として表すことのできる数値なのに exp(gammaln(11)) の精度は低すぎます。ほとんどの所で,有効桁が10桁くらいしか正しくないですね。

figure


Excel 2004 になっても,変なのと精度が悪いのは変わっていません。

figure


Last modified: May 13, 2005

・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI