ベータ関数
定義と性質
ベータ関数 (beta function) は以下の積分で定義される特殊関数。
不完全ベータ関数
不完全ベータ関数 (incomplete beta function) はベータ関数を一般化し
正則ベータ関数 (regularized beta function)
もし
アルゴリズム
ベータ関数の実装
ベータ関数は式 (
def beta(x:Double, y:Double):Double = {
math.exp(gammaln(x) + gammaln(y) - gammaln(x + y))
}
Scala の REPL での実行結果は以下の通り。
不完全ガンマ関数の実装
不完全ガンマ関数は級数展開が可能である。
def betai(z:Double)(x:Double, y:Double):Double = {
if(z < 0.0 || z > 1.0){
throw new IllegalArgumentException()
}
val bt = if(x == 0.0 || x == 1.0) 0.0 else {
math.exp(gammaln(x + y) - gammaln(x) - gammaln(y) + x * math.log(z) + y * math.log(1.0 - z))
}
if(z < (x + 1.0) / (x + y + 2.0)){
bt * beta
}
}
scala>