什麼是不完全 Gamma 函數?
不完全 Gamma 函數是一般(完全)Gamma 函數的推廣:它在一個有限的點就停止積分,而不是一路積到無限大。其中,下不完全 Gamma 函數 \(\gamma(a,x)\) 是把 \(t^{a-1} e^{-t}\) 從 0 積到 \(x\);而上不完全 Gamma 函數 \(\Gamma(a,x)\) 則是從 \(x\) 積到無限大。兩者都取決於形狀參數 \(a\) 與引數 \(x\),且都是純粹的無因次實數。它們在統計學(卡方分配與 Gamma 分配的累積分配函數 CDF)、物理學、可靠度工程以及排隊理論中,可說是無所不在。
如何使用本計算機
請輸入形狀參數 a(必須為正,\(a > 0\))與引數 x(必須非負,\(x \ge 0\))。計算機會回傳 \(\gamma(a,x)\)、\(\Gamma(a,x)\),以及完全 Gamma 函數 \(\Gamma(a)\),讓你能驗證恆等式 \(\gamma(a,x) + \Gamma(a,x) = \Gamma(a)\)。當 \(x = 0\) 時,下不完全函數為 0,上不完全函數等於 \(\Gamma(a)\);隨著 \(x\) 越來越大,下不完全函數會趨近 \(\Gamma(a)\),而上不完全函數則趨近 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\);否則改用 Lentz 連分數計算 \(Q\)。完全 Gamma 函數 \(\Gamma(a)\) 則透過 \(\ln\Gamma(a)\) 的 Lanczos 近似法求得。這正是經典《Numerical Recipes》中的 gammp/gammq 分流法,在雙精度浮點運算下可達到約 15 位有效數字的準確度。
實際範例
取 \(a = 1\)、\(x = 2\)。由於 \(t^{a-1} = t^0 = 1\),下不完全函數即為 \(e^{-t}\) 從 0 積到 2 $$= 1 - e^{-2} = 1 - 0.13533528 = 0.86466472$$ 上不完全函數為 \(e^{-2} = 0.13533528\),而 \(\Gamma(1) = 1\)。驗證恆等式 \(0.86466472 + 0.13533528 = 1.0\),結果無誤。
常見問題
為什麼 a 必須為正?收斂的定義以及 Lanczos 的 ln-gamma 求值都要求 \(a > 0\);在非正整數處,\(\Gamma(a)\) 會出現極點(無定義)。
如果 x 等於 0 怎麼辦?此時 \(\gamma(a,0) = 0\) 且 \(\Gamma(a,0) = \Gamma(a)\),因此上不完全函數會等於完全 Gamma 函數。
計算結果有多準確?透過雙精度運算搭配級數/連分數的分流策略,在有效定義域內可達到約 15 位有效數字。