ベータ関数
ベータ関数は複素数 $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()
ベータ関数の相反公式
ベータ関数 $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")
コメントを書く