R言語でベータ関数とガンマ関数を計算する関数とその実行例についてまとめました。
階乗を複素数に拡張した特殊関数であるガンマ関数とそれに関連するベータ関数をR言語で計算する方法を紹介します。
この記事で用いるプログラミングコードは以下からダウンロードできます。
R言語 ベータ関数・ガンマ関数
ベータ関数とガンマ関数
R言語でベータ関数とガンマ関数を計算する際に用いる関数をまとめました。
ベータ関数とガンマ関数のほかにも、対数をとったものを計算する関数なども実装されています。
ベータ関数
次の関数betaでベータ関数を計算することができます。
また、関数lbetaでベータ関数に対数をとったものを計算できます。
lbeta(a, b)
関数beta、lbetaの引数は次の通りです。
a | パッケージ名のcharacter型のベクトル |
b | インストール先のlibraryのディレクトリを表すcharacter型のベクトル。 |
ガンマ関数
関数gammaでガンマ関数を計算することができます。
また、ガンマ関数に対数をとったものなど様々な関数が用意されています。
lgamma(x)
psigamma(x, deriv = 0)
digamma(x)
trigamma(x)
関数gamma、lgamma、psigamma、digamma、trigammaの引数は次の通りです。
x | リポジトリのURL。"username/repo[/subdir][@ref|#pull]"のように与える。 |
deriv | リポジトリのユーザー名。 |
実行例
ベータ関数とガンマ関数をR言語で計算する例をまとめました。
それぞれの関数の計算例だけでなくグラフの描き方についても紹介しています。
ベータ関数
ベータ関数を計算するには関数betaを用います。
引数aとbにはそれぞれベータ関数\(B(a, b)\)の引数に対応しています。
また、関数lbetaでベータ関数に対数をとったものを計算することもできます。
1 2 3 4 5 6 | #ベータ関数 a <- 3 b <- 2 b <- beta(a, b) lb <- lbeta(a, b) |
計算した各種ベータ関数の値はそれぞれ次となります。
1 2 3 4 | > b [1] 0.08333333 > lb [1] 2.364042 |
また、関数perspを使うことでベータ関数を描くことができます。
関数betaとlbetaのグラフはそれぞれ下の画像のようになります。
1 2 3 4 5 6 7 8 | x <- seq(1, 10, length = 50) y <- seq(1, 10, length = 50) z <- outer(x, y, beta) persp(x, y, z, theta=120, phi=20, expand=0.5, ticktype="detailed") z <- outer(x, y, lbeta) persp(x, y, z, theta=120, phi=20, expand=0.5, ticktype="detailed") |
ガンマ関数
次にガンマ関数の計算例について見ていきます。
ガンマ関数を計算するには関数gammaを用います。
引数xはガンマ関数\(\Gamma(x)\)の引数に対応しています。
また、関数lgammaでガンマ関数に対数をとったものを計算でき、psigamma、digamma、trigammaでそれぞれ次で定義される関数の値を得ることができます。
1 2 3 4 5 6 7 | x <- 5 g <- gamma(x) lg <- lgamma(x) pg <- psigamma(x) dg <- digamma(x) tg <- trigamma(x) |
計算したこれらの関数の値は次の通りです。
1 2 3 4 5 6 7 8 9 10 | > g [1] 24 > lg [1] 3.178054 > pg [1] 1.506118 > dg [1] 1.506118 > tg [1] 0.221323 |
また、関数curveを用いることで、各種ガンマ関数を描くことができます。
1 2 3 4 5 | curve(gamma, from = 1, to = 10) curve(lgamma, from = 1, to = 10) curve(psigamma, from = 1, to = 10) curve(digamma, from = 1, to = 10) curve(trigamma, from = 1, to = 10) |
まとめ
R言語でベータ関数とガンマ関数を計算する関数を紹介しました。
ベータ関数とガンマ関数はRに標準で実装されており、それぞれ関数beta、gammaを用いることで計算することが可能です。
また関数lbetaやlgammaなどのそれぞれの関数に対数をとったものや、ガンマ関数に関連する特殊関数も実装されています。