倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

commons-math 解読 (19) : ベータ関数 Beta

今回はベータ関数を表す Beta クラスを見ていきます。

Beta クラス

Beta クラスの定義は以下のようになっています。 どれも関数値を計算する static メソッドです:

package org.apache.commons.math.special;

public class Beta{

    public static double logBeta(double a, double b);
    public static double logBeta(double a, double b, double epsilon, int maxIterations);

    public static double regularizedBeta(double x, double a, double b);
    public static double regularizedBeta(double x, double a, double b, double epsilon);
    public static double regularizedBeta(double x, double a, double b, double epsilon, int maxIterations);
    public static double regularizedBeta(double x, double a, double b, int maxIterations);
}

定義されているのは

  • ベータ関数の自然体数 { \log B(a,\,b) }
  • 正規化されたベータ関数 { I(x;\,a,\,b) }

ベータ関数 : Beta Function

ベータ関数は以下のように定義されています:

  { \displaystyle
\begin{align*}
    B(a,\,b) &= \int_0^1 t^{a-1}(1-t)^{b-1}dt
\end{align*}
}

この関数は引数 { a,\,b } に関して対称で、ガンマ関数を使って表すこともできます:

  { \displaystyle
\begin{align*}
    B(a,\,b) = B(b,\,a) = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)}
\end{align*}
}

証明はこちら

不完全ベータ関数 : Incomplete Beta Function

ガンマ関数の場合と同様に、積分区間の上限を変数にして不完全ベータ関数が定義されます:

  { \displaystyle
\begin{align*}
    B(x;\,a,\,b) &= \int_0^x t^{a-1}(1-t)^{b-1}dt
\end{align*}
}

Beta クラスの static メソッドに依って計算できる regularizedBeta (正則化されたベータ関数)は、この不完全ベータ関数 { B(a,\,b) } を用いて

  { \displaystyle
\begin{align*}
    I(x;\,a,\,b) &= \frac{B(x;\,a,\,b)}{B(a,\,b)}
\end{align*}
}

と定義されます。

特殊函数 (岩波 数学公式 3)

特殊函数 (岩波 数学公式 3)

Javaによるアルゴリズム事典

Javaによるアルゴリズム事典