ベータ関数
ベータ関数は複素数 $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")
コメント