counter

Visual Basicサンプル

ガンマ関数、階乗関数、ベータ関数、2項係数、不完全ガンマ関数、不完全ベータ関数


確率・統計の分野で多用される関数を計算する方法を、Visual Basicのソースコードで紹介します。整数の階乗の考え方を自然数や複素数にまで拡張したガンマ関数(の自然対数)をはじめ、ガンマ関数を用いて算出できる階乗、ベータ関数、2項係数、不完全ガンマ関数、不完全ベータ関数のサンプルを示します。


不完全ガンマ関数からは誤差関数やカイ2乗関数、累積ポワッソン確率関数を導くことができ、また、不完全ベータ関数からはStudentの分布やF分布、累積2項分布が導かれます。


一番元になるガンマ関数は、当初、


NUMERICAL RECIPES in C (日本語版)
William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery
技術評論社
ISBN4-87408-560-1


に掲げられたLanczosの近似による計算方法を移植しましたが、この方法はせいぜいSingle型の精度しか出せません。一方で、京都大学の大浦氏が示した近似による方法を用いればDouble型の精度が得られます。


VB.Net版

VB6又はそれ以前


改定日 内 容
2007/06/26 数値演算モジュールなど/NUMERICAL RECIPES からの移植」のページから独立して掲載。Ver6(以前)版についてはファイル名のみを変更。VB.Net版については、ガンマ関数の計算方法を大浦氏の近似に変更。階乗関数、ベータ関数、2項係数を追加。ファイルの構成を変更。
2007/07/23 VB.Net版について、引数の範囲が不正な場合にスローされる例外を、System.ArithmeticExceptionからSystem.ArgumentOutOfRangeExceptionに変更。