不完全ガンマ関数とは
不完全ガンマ関数は、通常の(完全)ガンマ関数の積分を無限大まで行わず、有限の点で打ち切ったものとして一般化した関数です。第1種不完全ガンマ関数 \(\gamma(a,x)\) は被積分関数 \(t^{a-1} e^{-t}\) を 0 から \(x\) まで積分したもの、第2種不完全ガンマ関数 \(\Gamma(a,x)\) は \(x\) から無限大まで積分したものを表します。いずれも形状パラメータ \(a\) と引数 \(x\) に依存し、結果は単位を持たない実数になります。これらの関数は統計(カイ二乗分布やガンマ分布の累積分布関数)、物理学、信頼性工学、待ち行列理論など、さまざまな場面に頻繁に登場します。
この計算機の使い方
形状パラメータ a(正の数、\(a > 0\))と引数 x(0 以上、\(x \geq 0\))を入力してください。計算機は \(\gamma(a,x)\)、\(\Gamma(a,x)\)、そして完全ガンマ関数 \(\Gamma(a)\) を返すので、恒等式 \(\gamma(a,x) + \Gamma(a,x) = \Gamma(a)\) が成り立つことを確認できます。\(x = 0\) のとき第1種は 0、第2種は \(\Gamma(a)\) に等しくなります。\(x\) が大きくなるにつれて第1種は \(\Gamma(a)\) に近づき、第2種は 0 に近づきます。
計算式とアルゴリズム
定義となる積分は $$\gamma\!\left(a,\, x\right) = \int_{0}^{x} t^{\,a-1}\, e^{-t}\, dt$$ $$\Gamma\!\left(a,\, x\right) = \int_{x}^{\infty} t^{\,a-1}\, e^{-t}\, dt = \Gamma\!\left(a\right) - \gamma\!\left(a,\, x\right)$$ です。安定して計算するため、本ツールでは正規化形 \(P(a,x) = \gamma(a,x)/\Gamma(a)\) と \(Q(a,x) = \Gamma(a,x)/\Gamma(a)\) を用います。\(x < a+1\) の場合は急速に収束するべき級数で \(P\) を求め、それ以外の場合はレンツ法による連分数展開で \(Q\) を求めます。完全ガンマ \(\Gamma(a)\) は \(\ln \Gamma(a)\) のランチョス近似から得ます。これは「Numerical Recipes」で知られる gammp/gammq の使い分けで、倍精度では約15桁の有効精度が得られます。
計算例
\(a = 1\)、\(x = 2\) としてみましょう。\(t^{a-1} = t^0 = 1\) なので、第1種は \(e^{-t}\) を 0 から 2 まで積分した値 $$1 - e^{-2} = 1 - 0.13533528 = 0.86466472$$ となります。第2種は \(e^{-2} = 0.13533528\)、そして \(\Gamma(1) = 1\) です。恒等式の検算 \(0.86466472 + 0.13533528 = 1.0\) により、結果が正しいことが確認できます。
よくある質問
なぜ a は正でなければならないのですか? 収束する定義式とランチョス近似による \(\ln \Gamma(a)\) の評価には \(a > 0\) が必要です。\(a\) が 0 以下の整数のとき、\(\Gamma(a)\) は極(無限大)を持ちます。
x が 0 のときはどうなりますか? \(\gamma(a,0) = 0\)、\(\Gamma(a,0) = \Gamma(a)\) となり、第2種は完全ガンマ関数に等しくなります。
結果の精度はどのくらいですか? 倍精度演算と級数・連分数の使い分けにより、有効定義域全体でおよそ15桁の有効数字が得られます。