『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

ベータ関数

ベータ関数

ベータ関数は複素数 $x,\ y$ について
 \[B(x,y)=\int_{0}^{1}t^{x-1}(1-t)^{y-1}dt\quad (\mathrm{Re}x,\mathrm{Re}y\gt 0)\tag{1}\]
で定義される関数です。定義式 (1) から明らかなように、ベータ関数は引数 $x$ と $y$ を交換しても値を変えません。すなわち
 \[B(x,y)=B(y,x)\tag{2}\]
が成り立ちます。SciPy の特殊関数計算用サブパッケージ special から beta() 関数をインポートして、(2) を確かめてみましょう。

# PYTHON_BETA_FUNCTION

# In[1]

from scipy.special import beta, gamma

# ベータ関数の変数交換
a = beta(1, 2)
b = beta(2, 1)

print("B(1, 2) = {}".format(a))
print("B(2, 1) = {}".format(b))

# B(1, 2) = 0.5
# B(2, 1) = 0.5

ベータ関数とガンマ関数

ベータ関数はガンマ関数
 \[B(x,y)=\frac{\Gamma (x)\Gamma (y)}{\Gamma (x+y)}\tag{3}\]
という関係で結びついています。

# In[2]

# B(3, 5)
b = beta(3, 5)

# Γ(3)Γ(5)/Γ(3+5)
g = gamma(3) * gamma(5) / gamma(8)

print("B(3, 5) = {:.5f}".format(b))
print("Γ(3)Γ(5)/Γ(3+5) = {:.5f}".format(g))

# B(3, 5) = 0.00952
# Γ(3)Γ(5)/Γ(3+5) = 0.00952

ベータ関数のグラフ

$y=1,\ 2,\ 3$ に固定して、$x$ を変化させたときのベータ関数をプロットしてみます。

# In[3]

import numpy as np
import matplotlib.pyplot as plt

# x座標データ
x = np.linspace(0, 4, 65)

# グラフ描画領域を設定
fig = plt.figure(figsize = (6, 6))
ax = fig.add_subplot(111)
ax.set_title("Beta Functions", size = 15)
ax.grid()
ax.set_xlim(0, 4)
ax.set_ylim(0, 4)
ax.set_xlabel("x", size = 14, labelpad = 10)
ax.set_ylabel("B(x, y)", size = 14, labelpad = 10)

# 色のリスト
c = ["red", "blue", "green"]

# ベータ関数B(x,1),B(x,2),B(x,3)のグラフを描画
for i in range(1, 4):
    ax.plot(x, beta(x, i), color = c[i - 1],
            label = "y = {}".format(i))

# 凡例を表示
ax.legend()

Python ベータ関数 (beta function)

ベータ関数の相反公式

ベータ関数 $B(x,1-x)$ は正弦関数 $\sin x$ と次のような形で結びついています。
 \[B(x,1-x)=\frac{\pi}{\sin \pi x}\]
これをベータ関数の 相反公式 とよびます。
$B(x,1-x)$ は整数点 $x=0,\ 1,\ 2,\ …$ を漸近線にもつ周期関数です。

# In[4]

# グラフ描画領域を設定
fig = plt.figure(figsize = (6, 6))
ax = fig.add_subplot(111)
ax.set_title("B(x, 1 - x)", size = 15)
ax.grid()
ax.set_xlim(0, 4)
ax.set_ylim(-15, 15)
ax.set_xlabel("x", size = 14, labelpad = 10)
ax.set_ylabel("B(x, 1-x)", size = 14, labelpad = 8)

# B(x,1-x)のグラフを描画
for i in range(4):
    x = np.linspace(i, i + 1, 65)
    ax.plot(x, beta(x, 1 - x), color = "darkblue")

ベータ関数 (beta function) と正弦関数 (sine)

コメント