Table of Contents
パラメーターが整数のときのベータ関数の導出
Def: ベータ関数
https://ryonakagami.github.io/2021/04/21/variable-transformation/ ベータ関数 $\beta(s, t), s> 0, t > 0$は以下のように定義される
\[\beta(s, t) = \int^1_0 x^{s-1}(1-x)^{t-1}dx\]また, ベータ関数はガンマ関数を用いて以下のように表せる
\[\beta(s, t) = \frac{\Gamma(s+t)}{\Gamma(s)\Gamma(t)}\]このベータ関数はベータ分布やベイズ推論における事前分布として用いられる重要な関数です. この導出は高校数学の範囲でできるので確認してみます.
ガンマ関数の性質
定積分の漸化式を用いたベータ関数の導出
Problem
以下を示せ:
\[\int^b_a(x-a)^m(b-x)^ndx = \frac{m!n!}{m+n+1}(b-a)^{m+n+1}\]ただし, $m, n$は正の整数とする.
とまず定義します. すると
\(\begin{align*} I(m, n) &= \int^b_a(x-a)^m(b-x)^ndx\\[3pt] &= \bigg[\frac{1}{m+1}(x-a)^{m+1}(b-x)^n\bigg]^b_a + \frac{n}{m+1}\int^b_a(x-a)^{m+1}(b-x)^{n-1}dx\\[3pt] &= \frac{n}{m+1}I(m+1, n-1) \end{align*}\)
漸化式っぽい形が得られたので
\[\begin{align*} I(m, n) &=\frac{n}{m+1}I(m+1, n-1) \\[3pt] &=\frac{n}{m+1}\frac{n(n-1)}{(m+1)(m+2)}I(m+2, n-2) \\[3pt] &=\frac{n}{m+1}\frac{n(n-1)\cdots 1}{(m+1)(m+2)\cdots(m+n)}I(m+n, 0) \end{align*}\] \[I(m+n, 0) = \int^b_a(x-a)^{m+n}(b-x)^0dx = \frac{1}{m+n+1}(b-a)^{m+n+1}\]は明らかなので
\[I(m, n) = \frac{n!m!}{(m+n+1)!}(b-a)^{m+n+1}\]ベータ関数の性質
ベータ関数は上記の関数の$a=0, b=1$という特殊なときなので
\[\beta(s, t) = \frac{(s-1)!(t-1)!定積分の漸化式を用いた}{(s+t-1)!}\]とわかる. また, 上記の式より$s, t$が整数ならば
\(\begin{align*} \beta(s, t) &= \frac{(s-1)!(t-1)!}{(s+t-1)!}\\[3pt] &= \frac{(t-1)!(s-1)!}{(s+t-1)!}\\[3pt] &= \beta(t, s) \end{align*}\)
となり, $\beta(s, t) = \beta(t, s)$が成立することがわかる.
ベータ関数とガンマ関数
ベータ関数はガンマ関数を組み合わせて表現することもできます.
Def: ガンマ関数
正の実数 $x$に対して
\[\Gamma(x) = \int^\infty_0t^{x-1}\exp(-t)dt\]をガンマ関数と呼ぶ.
- ガンマ関数をplotすると上記のように$x\in(1,2)$の間で極小値をとり, そこから$x$がふえると爆発的に増えます
- 厳密に極値を求めるのはこんなんですが, 数値計算では$x=1.46, \Gamma(1.46…)=0.8856$近辺で極小値となります
ガンマ関数は階乗の一般化という性質があり, これを用いるとベータ関数との関係がわかりやすくなります
ガンマ関数の性質
任意の正の整数 $n$ について
\[\Gamma(n+1) = n!\]この性質を用いると,
\[\beta(t, s) = \frac{\Gamma(t)\Gamma(s)}{\Gamma(s+t)}\]であることが上記と照らし合わせてすぐわかります.
パラメーターが正の実数のときのベータ関数とガンマ関数の対応
これまでは正の整数空間を想定してベータ関数の性質を確認してきました. ここでは正の実数空間を対象にベータ関数の性質を考えていきます.
引数の交換性
正の実数$s, t > 0$について以下が成立する
\[\beta(s, t) = \beta(t, s)\]$z = 1-u$を用いた置換積分をすると以下のように示せます
\(\begin{align*} \beta(s, t) &= \int^1_0 z^{s-1}(1-z)^{t-1}dz\\ &= \int^1_0 (1-u)^{s-1}u^{t-1}du\\ &= \beta(t, s) \end{align*}\)
三角関数とベータ関数の性質
正の実数$s, t > 0$について以下が成立する
\[\beta(s, t) = 2\int^{\pi/2}_0\cos^{2s-1}\theta\sin^{2t-1}\theta d\theta\]これも$z = \cos^2\theta$を用いた置換積分で示せます
\[\frac{\partial \cos^2\theta}{\partial \theta} = -2\cos\theta\sin\theta\]に留意すると
\(\begin{align*} \beta(s, t) &= \int^1_0 z^{s-1}(1-z)^{t-1}dz\\[3pt] &= -2\int^0_{\pi/2} \cos^2\theta^{s-1}(1-\cos^2\theta)^{t-1} (\cos\theta\sin\theta) d\theta\\[3pt] &= -2\int^0_{\pi/2} \cos\theta^{2s-1}(\sin^2\theta)^{2t-1} d\theta\\[3pt] &= 2\int^{\pi/2}_0 \cos\theta^{2s-1}(\sin^2\theta)^{2t-1} d\theta\\[3pt] \end{align*}\)
ベータ関数とガンマ関数
正の実数$s, t > 0$について以下が成立する
\[\beta(t, s) = \frac{\Gamma(t)\Gamma(s)}{\Gamma(s+t)}\]$\Gamma(s)$について
\[\Gamma(s) = 2\int_0^\infty x^{2s-1}\exp(-x^2)dx\]が成立するので
\(\begin{align*} \Gamma(s)\Gamma(t) &= 4\int_0^\infty x^{2s-1}\exp(-x^2)dx \int_0^\infty y^{2t-1}\exp(-y^2)dy\\ &= 2\int_0^\infty\int_0^\infty x^{2s-1}y^{2t-1} \exp(-(x^2 + y^2))dxdy \end{align*}\)
ここで$x = r\cos\theta, y =r\sin\theta$という変数変換を行うと
\(\begin{align*} \Gamma(s)\Gamma(t) &= \int_0^{\pi/2}\int_0^\infty \cos^{2s-1}\theta \sin^{2t-1}\theta \exp(-r)rdrdy\theta\\[3pt] &= \bigg(2\int^{\pi/2}_0\cos^{2s-1}\theta\sin^{2t-1}\theta d\theta\bigg)\bigg(2\int_0^\infty r^{2(s+t)-1}\exp(-r^2)dr\bigg)\\ &= \beta(s, t)\Gamma(s+t) \end{align*}\)
したがって,
\[\beta(s, t)=\frac{\Gamma(t)\Gamma(s)}{\Gamma(s+t)}\]Appendix
ガンマ関数の作図
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
import math
import plotly.graph_objects as go
x = np.linspace(0, 7.5, 10000)[1:]
y = list(map(math.gamma, x))
y_factorial = list(map(math.factorial, np.arange(0, 9)))
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y,
mode='lines', name='gamma function'))
fig.add_scatter(x=np.arange(1, 8),
y=y_factorial,
name='factorial',
mode="markers")
fig.update_layout(
title='ガンマ関数: x の増加とともに爆発的に増えていく',
width=600, height=500,
margin=dict(l=20, r=20, t=60, b=20),
xaxis_range=[-0.5,7.5],
yaxis_range=[-20,900],
yaxis_title="Γ(x)",
)
References
(注意:GitHub Accountが必要となります)