$5! = 120$、$10! = 3628800$ のように、整数の階乗は簡単に計算できます。では、$\left(\frac{1}{2}\right)! = ?$ — つまり「0.5の階乗」は何でしょうか。整数でない値の階乗に意味はあるのでしょうか。
この問いに答えたのが、レオンハルト・オイラー(1707–1783)です。彼は1729年に、階乗を実数(さらには複素数)にまで拡張する関数を発見しました。それがガンマ関数 $\Gamma(z)$ です。$\Gamma(n+1) = n!$($n$ が非負整数のとき)となるように定義されているため、$\Gamma$ は階乗の自然な「補間」です。驚くべきことに、$\Gamma(1/2) = \sqrt{\pi}$ であり、$\left(\frac{1}{2}\right)!$ は $\sqrt{\pi}/2$ ということになります。
ガンマ関数と密接に関連するベータ関数 $B(a, b)$ も、確率論や統計学で重要な役割を果たします。
これらの特殊関数を理解すると、以下のような応用が開けます。
- 確率分布: ガンマ分布、ベータ分布、カイ二乗分布、$t$ 分布、$F$ 分布の確率密度関数にはガンマ関数が正規化定数として現れます。統計学で頻繁に登場するこれらの分布を正しく理解するには、ガンマ関数の知識が不可欠です
- 組み合わせ論: 二項係数 $\binom{n}{k}$ を実数(さらには複素数)に一般化するとき、$\binom{\alpha}{k} = \frac{\Gamma(\alpha+1)}{\Gamma(k+1)\Gamma(\alpha-k+1)}$ とガンマ関数で表されます
- 物理学: スターリングの近似は統計力学での状態数の計算に不可欠です。ボルツマンのエントロピー $S = k_B \ln W$ の $W$ に $N!$ が含まれるとき、スターリングの近似が威力を発揮します
- 数値解析: ガウス求積法の重み関数や直交多項式の正規化にガンマ関数が登場します
- 量子力学: 水素原子の波動関数の動径部分にもガンマ関数(ラゲール多項式の正規化)が関わります
本記事の内容
- ガンマ関数の定義と基本性質
- ガンマ関数の特殊値とスターリングの近似
- ベータ関数の定義と性質
- ガンマ関数とベータ関数の関係
- Pythonによる実装と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
- 重積分の計算方法と座標変換 — ガウス積分の計算
- テイラー展開の理論と応用 — 級数展開
ガンマ関数とは — 階乗の一般化
直感的な理解
整数 $n$ の階乗 $n! = 1 \times 2 \times \cdots \times n$ は、$n$ 個の異なるものの並べ方の数です。しかし、この定義は整数にしか適用できません。
「非整数にも使える階乗」を作るために、まず階乗の積分表現を見つけましょう。部分積分を繰り返すと
$$ \int_0^{\infty} t^n e^{-t} dt = n! $$
が成り立つことが示せます($n$ が非負整数のとき)。これを確認するために、$n = 3$ の場合を追ってみましょう。部分積分($u = t^3$, $dv = e^{-t}dt$)を行うと
$$ \int_0^{\infty} t^3 e^{-t} dt = [-t^3 e^{-t}]_0^{\infty} + 3\int_0^{\infty} t^2 e^{-t}dt = 3 \int_0^{\infty} t^2 e^{-t}dt $$
同様に繰り返すと $3 \cdot 2 \cdot 1 \cdot \int_0^{\infty} e^{-t}dt = 3! \cdot 1 = 6$ が得られます。
重要なポイントは、この積分の左辺は $n$ が整数でなくても(たとえば $n = 0.5$ でも)定義できるということです。$t^{0.5} e^{-t}$ の $0$ から $\infty$ までの積分は、被積分関数が連続な正の値を取る($t > 0$ で)ため、well-defined な有限値を持ちます。これを階乗の一般化として採用するのです。
ガンマ関数の定義
ガンマ関数は次のように定義されます。
$$ \begin{equation} \Gamma(z) = \int_0^{\infty} t^{z-1} e^{-t} \, dt \quad (\text{Re}(z) > 0) \end{equation} $$
$z$ が正の実数(または正の実部を持つ複素数)のとき、この広義積分は収束します。収束を保証する仕組みを詳しく見てみましょう。
被積分関数 $t^{z-1}e^{-t}$ の振る舞いは2つの極限で異なります。
- $t \to 0^+$ 付近: $e^{-t} \approx 1$ なので $t^{z-1}$ の振る舞いが支配的です。$z – 1 > -1$、すなわち $z > 0$ であれば、$\int_0^1 t^{z-1}dt$ は収束します。逆に $z \leq 0$ では $t = 0$ での発散が積分を破綻させます
- $t \to \infty$ 付近: $e^{-t}$ の急速な減衰が $t^{z-1}$ のべき増大を圧倒し、収束を保証します。任意のべき乗 $t^{z-1}$ は指数関数 $e^{-t}$ に比べて十分遅い増大です
指数の $z-1$ が $z$ ではなく $z-1$ になっているのは歴史的な慣習であり、$\Gamma(n+1) = n!$ という関係を簡潔にするためです。実は、$\Pi(z) = \Gamma(z+1) = z!$ という「パイ関数」を使う流派もあり、こちらでは $\Pi(n) = n!$ と直接対応します。しかし、ガンマ関数のほうが解析的に扱いやすい性質(反射公式やルジャンドルの倍数公式など)を持つため、標準的に採用されています。
基本性質
漸化式: ガンマ関数の最も重要な性質は
$$ \begin{equation} \Gamma(z+1) = z \Gamma(z) \end{equation} $$
これは部分積分で証明できます。
$$ \Gamma(z+1) = \int_0^{\infty} t^z e^{-t} dt = \underbrace{[-t^z e^{-t}]_0^{\infty}}_{=0} + z\int_0^{\infty} t^{z-1} e^{-t} dt = z\Gamma(z) $$
$\Gamma(1) = \int_0^{\infty} e^{-t} dt = 1$ と組み合わせると
$$ \Gamma(2) = 1 \cdot \Gamma(1) = 1 = 1!, \quad \Gamma(3) = 2 \cdot \Gamma(2) = 2 = 2!, \quad \ldots $$
一般に $\Gamma(n+1) = n!$($n = 0, 1, 2, \ldots$)です。
解析接続: 漸化式 $\Gamma(z) = \Gamma(z+1)/z$ を使えば、$\text{Re}(z) \leq 0$ の領域にもガンマ関数を拡張できます。たとえば $\Gamma(-1/2) = \Gamma(1/2)/(-1/2) = -2\sqrt{\pi}$ です。ただし、$z = 0, -1, -2, \ldots$(非正整数)では分母の $z$ がゼロになるため、$\Gamma(z)$ は極(発散)を持ちます。
具体的に見ると、$\Gamma(0) = \Gamma(1)/0 = 1/0$ で発散し、$\Gamma(-1) = \Gamma(0)/(-1)$ も $\Gamma(0)$ が発散しているため定義できません。非正整数の各点で $\Gamma$ は1位の極を持ち、留数は $\text{Res}(\Gamma, -n) = (-1)^n/n!$ となります。この情報は複素解析でガンマ関数を扱う際に重要です。
対数凸性: ガンマ関数にはもう一つ注目すべき性質があります。$\ln\Gamma(x)$ が凸関数であるという対数凸性です。実は、ボーア=モルラップの定理(Bohr-Mollerup theorem)によると、漸化式 $\Gamma(x+1) = x\Gamma(x)$、$\Gamma(1) = 1$、対数凸性の3条件を同時に満たす関数は $\Gamma(x)$ に限ることが知られています。つまり、階乗の「自然な」一般化は本質的にガンマ関数しかないのです。
特殊値
$\Gamma(1/2) = \sqrt{\pi}$: これはガンマ関数の最も有名な特殊値です。
$$ \Gamma(1/2) = \int_0^{\infty} t^{-1/2} e^{-t} dt $$
$t = u^2$ と置換すると $dt = 2u \, du$ で
$$ \Gamma(1/2) = \int_0^{\infty} u^{-1} e^{-u^2} \cdot 2u \, du = 2\int_0^{\infty} e^{-u^2} du = \sqrt{\pi} $$
最後にガウス積分 $\int_0^{\infty} e^{-u^2} du = \sqrt{\pi}/2$ を使いました。
この結果から漸化式を使って半整数のガンマ関数が連鎖的に求まります。
$$ \Gamma(3/2) = \frac{1}{2}\Gamma(1/2) = \frac{\sqrt{\pi}}{2}, \quad \Gamma(5/2) = \frac{3}{2}\Gamma(3/2) = \frac{3\sqrt{\pi}}{4} $$
$$ \Gamma(7/2) = \frac{5}{2}\Gamma(5/2) = \frac{15\sqrt{\pi}}{8} $$
一般に、半整数のガンマ関数は
$$ \Gamma\left(n + \frac{1}{2}\right) = \frac{(2n)!}{4^n n!}\sqrt{\pi} = \frac{1 \cdot 3 \cdot 5 \cdots (2n-1)}{2^n}\sqrt{\pi} $$
と表されます。この公式は二重階乗 $(2n-1)!! = 1 \cdot 3 \cdot 5 \cdots (2n-1)$ を使って $\Gamma(n+1/2) = (2n-1)!! \cdot \sqrt{\pi}/2^n$ とも書けます。
スターリングの近似
$n$ が大きいとき、$n!$ の近似公式としてスターリングの近似が有用です。
$$ \begin{equation} \Gamma(z+1) \approx \sqrt{2\pi z} \left(\frac{z}{e}\right)^z \quad (z \to \infty) \end{equation} $$
整数の場合 $n! \approx \sqrt{2\pi n}(n/e)^n$ です。
この近似の精度を感覚的につかんでおきましょう。$n = 10$ のとき、正確な値は $10! = 3628800$、スターリングの近似は約 $3598695.6$ で、相対誤差はわずか約0.83%です。$n = 100$ では相対誤差は約0.083%にまで改善されます。
スターリングの近似の導出は、$\ln\Gamma(z+1) = \int_0^{\infty}(z\ln t – t)e^{0}\,dt$ をラプラスの方法(鞍点法)で評価することで得られます。被積分関数 $g(t) = z\ln t – t$ は $t = z$ で最大値を取り、その周りでの2次近似がガウス積分を生みます。このガウス積分が $\sqrt{2\pi z}$ の因子を与えるのです。
この近似は統計力学での分配関数の計算や、組み合わせ論での漸近解析で広く使われます。たとえばボルツマンの公式 $S = k_B \ln W$ で $W$ に $N!$ が含まれるとき、$\ln(N!) \approx N\ln N – N$ という簡略版(スターリングの近似の対数版)が使われます。
ガンマ関数の基本性質を理解したところで、次にベータ関数を導入しましょう。ベータ関数は一見ガンマ関数とは異なる形の積分ですが、実は深い関係で結ばれています。
ベータ関数
定義と直感
ベータ関数は次のように定義されます。
$$ \begin{equation} B(a, b) = \int_0^1 t^{a-1}(1-t)^{b-1} \, dt \quad (a, b > 0) \end{equation} $$
直感的には、ベータ関数は区間 $[0, 1]$ 上で $t^{a-1}(1-t)^{b-1}$ という「重み」の総量を計算しています。$a$ と $b$ のバランスによって、被積分関数の形が大きく変わります。
- $a = b = 1$ のとき: $t^0(1-t)^0 = 1$ で、一様な重み。$B(1,1) = 1$
- $a > 1, b > 1$ のとき: ベル型の曲線。ピークは $t = (a-1)/(a+b-2)$ に位置します
- $a < 1, b < 1$ のとき: U字型。$t = 0$ と $t = 1$ 付近で値が大きくなります
- $a$ と $b$ の非対称性が大きいと、ピークが左右どちらかに偏ります
ベータ分布 $\text{Beta}(a, b)$ の密度関数は $f(t) = \frac{t^{a-1}(1-t)^{b-1}}{B(a,b)}$ であり、$B(a,b)$ は正規化定数(確率密度の積分が1になることを保証する定数)です。ベイズ統計では、二項分布の共役事前分布としてベータ分布が頻繁に使われます。たとえば、コインの表が出る確率 $p$ の事前分布に $\text{Beta}(a,b)$ を仮定し、データに基づいてパラメータを更新していくのがベイズ推定の基本的な流れです。
ベータ関数の対称性
$$ B(a, b) = B(b, a) $$
$u = 1 – t$ と置換すると $dt = -du$ で
$$ B(a, b) = \int_1^0 (1-u)^{a-1} u^{b-1}(-du) = \int_0^1 u^{b-1}(1-u)^{a-1} du = B(b, a) $$
三角関数表示
$t = \sin^2\theta$ と置換すると
$$ \begin{equation} B(a, b) = 2\int_0^{\pi/2} \sin^{2a-1}\theta \cos^{2b-1}\theta \, d\theta \end{equation} $$
この表現は、三角関数の積の積分(ウォリスの積分とも呼ばれます)を計算するのに便利です。導出を確認しましょう。$t = \sin^2\theta$ とおくと $dt = 2\sin\theta\cos\theta\,d\theta$ であり、$1 – t = \cos^2\theta$ なので
$$ B(a,b) = \int_0^1 t^{a-1}(1-t)^{b-1}dt = \int_0^{\pi/2} (\sin^2\theta)^{a-1}(\cos^2\theta)^{b-1} \cdot 2\sin\theta\cos\theta \, d\theta $$
$$ = 2\int_0^{\pi/2} \sin^{2a-1}\theta\cos^{2b-1}\theta \, d\theta $$
別の変数変換表示
ベータ関数にはもう一つ便利な表示があります。$t = u/(1+u)$($u \in [0, \infty)$)と置換すると $dt = du/(1+u)^2$ であり
$$ B(a, b) = \int_0^{\infty} \frac{u^{a-1}}{(1+u)^{a+b}} du $$
この表示は、特に $a + b$ が整数の場合に部分分数分解で計算しやすくなります。
ベータ関数の基本性質を知ったところで、ガンマ関数との美しい関係を導出しましょう。この関係式は特殊関数論において最も重要な公式の一つです。
ガンマ関数とベータ関数の関係
関係式の導出
ガンマ関数とベータ関数の間には、次の重要な関係式が成り立ちます。
$$ \begin{equation} B(a, b) = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)} \end{equation} $$
証明: $\Gamma(a)\Gamma(b)$ を2つの積分の積として書きます。
$$ \Gamma(a)\Gamma(b) = \int_0^{\infty} s^{a-1}e^{-s}ds \cdot \int_0^{\infty} t^{b-1}e^{-t}dt = \int_0^{\infty}\int_0^{\infty} s^{a-1}t^{b-1}e^{-(s+t)}ds\,dt $$
ここで変数変換 $s = uv$, $t = u(1-v)$($u \in [0, \infty)$, $v \in [0, 1]$)を行います。ヤコビアンは
$$ \frac{\partial(s,t)}{\partial(u,v)} = \begin{vmatrix} v & u \\ 1-v & -u \end{vmatrix} = -uv – u(1-v) = -u $$
$|J| = u$ であり、$s + t = u$ なので
$$ \Gamma(a)\Gamma(b) = \int_0^{\infty}\int_0^1 (uv)^{a-1}(u(1-v))^{b-1}e^{-u} \cdot u \, dv\,du $$
整理すると
$$ = \int_0^{\infty} u^{a+b-1}e^{-u}du \cdot \int_0^1 v^{a-1}(1-v)^{b-1}dv = \Gamma(a+b) \cdot B(a, b) $$
したがって $B(a,b) = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)}$ が得られました。
この関係式の意味を考えてみましょう。左辺の $B(a,b)$ は $[0,1]$ 上の1次元積分、右辺はガンマ関数3つの比です。2次元の積分($\Gamma(a)\Gamma(b)$ の積)を、適切な変数変換で「動径方向」($\Gamma(a+b)$ に対応)と「角度方向」($B(a,b)$ に対応)に分離したと見ることができます。これは極座標変換でガウス積分を計算するテクニックと本質的に同じアイデアです。
応用: $\Gamma(1/2) = \sqrt{\pi}$ の別証明
$B(1/2, 1/2) = \frac{\Gamma(1/2)^2}{\Gamma(1)} = \Gamma(1/2)^2$
一方
$$ B(1/2, 1/2) = \int_0^1 t^{-1/2}(1-t)^{-1/2}dt = \int_0^1 \frac{dt}{\sqrt{t(1-t)}} $$
$t = \sin^2\theta$ と置換すると $dt = 2\sin\theta\cos\theta\,d\theta$ で
$$ B(1/2, 1/2) = \int_0^{\pi/2} \frac{2\sin\theta\cos\theta}{\sin\theta\cos\theta}d\theta = \int_0^{\pi/2} 2\,d\theta = \pi $$
したがって $\Gamma(1/2)^2 = \pi$、すなわち $\Gamma(1/2) = \sqrt{\pi}$ です。
余り関数の公式
ガンマ関数のもう一つの重要な公式はオイラーの反射公式です。
$$ \begin{equation} \Gamma(z)\Gamma(1-z) = \frac{\pi}{\sin(\pi z)} \quad (z \notin \mathbb{Z}) \end{equation} $$
$z = 1/2$ のとき $\Gamma(1/2)^2 = \pi/\sin(\pi/2) = \pi$ が再び得られます。
反射公式の意味を直感的に考えてみましょう。$\Gamma(z)$ は $z > 0$ で正の値を取りますが、負の実軸では正と負を交互に繰り返します。反射公式は、正の側のガンマ関数と負の側のガンマ関数の積を $\sin$ 関数で結びつけています。$\sin(\pi z)$ が $z$ が整数のときにゼロになることと、$\Gamma(z)$ が非正整数で極を持つこととが対応しているのです。
ルジャンドルの倍数公式
ガンマ関数のもう一つの重要な公式として、ルジャンドルの倍数公式(duplication formula)を紹介します。
$$ \Gamma(z)\Gamma\left(z + \frac{1}{2}\right) = \frac{\sqrt{\pi}}{2^{2z-1}}\Gamma(2z) $$
$z = 1/2$ を代入して検証すると、左辺 $= \Gamma(1/2)\Gamma(1) = \sqrt{\pi} \cdot 1 = \sqrt{\pi}$、右辺 $= \frac{\sqrt{\pi}}{2^0}\Gamma(1) = \sqrt{\pi}$ で確かに一致します。
この公式は、ガンマ関数の引数を2倍にする操作と引数を $1/2$ ずらす操作を結びつけます。確率分布の畳み込み計算や、ルジャンドル多項式の正規化で実用的に使われます。
理論を一通り学んだところで、Pythonで可視化してみましょう。
Pythonでの実装と可視化
ガンマ関数の可視化
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import gamma, beta
from scipy.integrate import quad
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# (a) ガンマ関数のグラフ
ax = axes[0]
x = np.linspace(-4.5, 5, 1000)
y = np.zeros_like(x)
for i, xi in enumerate(x):
try:
y[i] = gamma(xi)
except:
y[i] = np.nan
# 発散する部分をクリップ
y = np.clip(y, -10, 10)
y[np.abs(np.diff(y, prepend=y[0])) > 5] = np.nan
ax.plot(x, y, 'b-', linewidth=2)
# 階乗の点を重ねる
n_vals = np.arange(0, 6)
factorial_vals = [gamma(n+1) for n in n_vals]
ax.plot(n_vals + 1, factorial_vals, 'ro', markersize=8,
label=r'$\Gamma(n+1) = n!$')
ax.plot(0.5, gamma(0.5), 'g*', markersize=15,
label=rf'$\Gamma(1/2) = \sqrt{{\pi}} \approx {gamma(0.5):.3f}$')
ax.set_xlabel('z', fontsize=12)
ax.set_ylabel(r'$\Gamma(z)$', fontsize=12)
ax.set_title('Gamma Function', fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
ax.set_ylim(-10, 10)
ax.axhline(0, color='gray', linewidth=0.5)
# (b) スターリングの近似
ax = axes[1]
n = np.arange(1, 21)
exact = np.array([gamma(ni + 1) for ni in n], dtype=float)
stirling = np.sqrt(2 * np.pi * n) * (n / np.e)**n
ax.semilogy(n, exact, 'bo-', markersize=6, label='Exact $n!$')
ax.semilogy(n, stirling, 'r^--', markersize=6, label="Stirling's approximation")
ax.set_xlabel('n', fontsize=12)
ax.set_ylabel('$n!$', fontsize=12)
ax.set_title("Stirling's Approximation", fontsize=13)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3, which='both')
# 相対誤差を追加
ax2 = ax.twinx()
relative_error = np.abs(exact - stirling) / exact * 100
ax2.plot(n, relative_error, 'g-', linewidth=1, alpha=0.5)
ax2.set_ylabel('Relative error (%)', fontsize=10, color='green')
ax2.tick_params(axis='y', labelcolor='green')
# (c) ベータ関数
ax = axes[2]
t = np.linspace(0.001, 0.999, 500)
params = [(0.5, 0.5), (1, 1), (2, 5), (5, 2), (2, 2)]
colors = plt.cm.viridis(np.linspace(0, 0.8, len(params)))
for (a, b), color in zip(params, colors):
y = t**(a-1) * (1-t)**(b-1)
B_val = beta(a, b)
ax.plot(t, y / B_val, color=color, linewidth=1.8,
label=f'Beta({a},{b}), B={B_val:.3f}')
ax.set_xlabel('t', fontsize=12)
ax.set_ylabel('Density', fontsize=12)
ax.set_title('Beta Distribution Densities', fontsize=13)
ax.legend(fontsize=8)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('gamma_beta.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフから、ガンマ関数とベータ関数の基本的な性質が確認できます。
-
左図(ガンマ関数): 正の整数点(赤い丸)で $\Gamma(n+1) = n!$ が成り立っていることが確認できます。$\Gamma(1/2) = \sqrt{\pi}$(緑の星)も示されています。負の整数 $0, -1, -2, \ldots$ で極(発散)を持ち、その間では正と負を交互に取る振る舞いが見えます。
-
中央図(スターリングの近似): $n!$ の正確な値(青い丸)とスターリングの近似(赤い三角)が対数スケールで描かれています。$n$ が大きくなるほど近似が良くなり、相対誤差(緑の線)が $n = 1$ で約8%、$n = 10$ で約1%、$n = 20$ で約0.4%と減少しています。
-
右図(ベータ分布): 様々なパラメータ $(a, b)$ でのベータ分布の密度を描いています。$(0.5, 0.5)$ はU字型、$(1, 1)$ は一様分布、$(2, 5)$ は左寄り、$(5, 2)$ は右寄り、$(2, 2)$ は対称なベル型です。
ガンマ・ベータ関係式の数値検証
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import gamma, beta
# B(a,b) = Gamma(a)*Gamma(b)/Gamma(a+b) の検証
a_values = np.linspace(0.5, 5, 20)
b_values = np.linspace(0.5, 5, 20)
errors = []
for a in a_values:
for b in b_values:
B_direct = beta(a, b)
B_gamma = gamma(a) * gamma(b) / gamma(a + b)
errors.append(abs(B_direct - B_gamma))
print(f"B(a,b) = Gamma(a)*Gamma(b)/Gamma(a+b) の最大誤差: {max(errors):.2e}")
# 反射公式: Gamma(z)*Gamma(1-z) = pi/sin(pi*z)
z_values = np.linspace(0.1, 0.9, 100)
lhs = gamma(z_values) * gamma(1 - z_values)
rhs = np.pi / np.sin(np.pi * z_values)
fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(z_values, lhs, 'b-', linewidth=2.5, label=r'$\Gamma(z)\Gamma(1-z)$')
ax.plot(z_values, rhs, 'r--', linewidth=1.5, label=r'$\pi / \sin(\pi z)$')
ax.set_xlabel('z', fontsize=12)
ax.set_ylabel('Value', fontsize=12)
ax.set_title("Euler's Reflection Formula", fontsize=13)
ax.legend(fontsize=12)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('gamma_reflection.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフから、オイラーの反射公式 $\Gamma(z)\Gamma(1-z) = \pi/\sin(\pi z)$ が数値的に完全に検証されています。2つの曲線が重なっていることが確認でき、公式の正しさが裏付けられます。$z = 0.5$ で $\Gamma(1/2)^2 = \pi/\sin(\pi/2) = \pi$ であることも読み取れます。
まとめ
本記事では、ガンマ関数とベータ関数の性質と関係について解説しました。
- ガンマ関数 $\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt$ は階乗の一般化であり、$\Gamma(n+1) = n!$
- 漸化式 $\Gamma(z+1) = z\Gamma(z)$ が基本性質。特殊値 $\Gamma(1/2) = \sqrt{\pi}$
- スターリングの近似 $n! \approx \sqrt{2\pi n}(n/e)^n$ は大きな $n$ で精度が高い
- ベータ関数 $B(a,b) = \int_0^1 t^{a-1}(1-t)^{b-1}dt$ はベータ分布の正規化定数
- 関係式 $B(a,b) = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)}$ がガンマ関数とベータ関数を結ぶ
- 反射公式 $\Gamma(z)\Gamma(1-z) = \pi/\sin(\pi z)$
- ルジャンドルの倍数公式 $\Gamma(z)\Gamma(z+1/2) = \frac{\sqrt{\pi}}{2^{2z-1}}\Gamma(2z)$
ガンマ関数とベータ関数は、一見すると単なる特殊関数のように思えますが、確率論、統計学、物理学、工学のあらゆる場面で正規化定数や特殊値として登場します。これらの関数の性質と相互関係をしっかり理解しておくことで、より高度なトピックへの準備が整います。
次のステップとして、以下の記事も参考にしてください。
- 重積分の計算方法と座標変換 — ガウス積分との関連
- ガンマ分布 — ガンマ関数の確率論への応用
- ベータ分布 — ベータ関数の確率論への応用