階乗からガンマ関数

階乗の補間

階乗n!をうまく補間して自然数以外でも定義された関数 f(x)を作りたいとする。
ただし階乗では n!=(n-1)! が成り立っているので、それに合わせて自然数以外のxについても f(x)= x・f(x-1) が成り立つようにする。
一見するとf(n)をなめらかに繋いでいく仕方は無数にありそうだけど、実際には、なめらかに自然に補間しようとするとf(x)の値は一意に決まってしまう。
n!は増加が速いので、対数を取って増加速度を落とした関数 g(n)= log(n!) を考える。

すると、対数を取って増加速度を落としても、xを1増やした時の増加量は、

g(2) = g(1) + log(2)
g(3) = g(2) + log(3)

g(n) = g(n-1) + log(n)
g(n+1) = g(n) + log(n+1)
g(n+2) = g(n+1) + log(n+2)

のように、log(2)、log(3)、log(4)、log(5)、……と徐々に増えている。(このg(n)をなめらかに補間するには、g(x)の増加率が常に増えていくようにすれば良いと考えられる。そのためにはg(x)の2階微分が非負になるように(あるいはそれを弱くして、g(x)が凸関数になるように)補間すれば良さそう。)

この関数g(n)に対する自然な補間の仕方を考えてみる。
まず各自然数nについて g(n) = g(n-1) + log(n) の関係があるので、xが自然数でないときでも常に

g(x) = g(x-1) + log(x)

の関係が成り立つように補間する。(そうするとf(x)については、常に f(x)=x・f(x-1) の関係が成り立つことになる。)
nが非常に大きい場合を考えると、gの増加量がlog(n)でもlog(n+1)でもlog(n+2)でも、あまり違いはない。(log(n+c) - log(n) < c/n なので、nが大きい値だと、log(n) と log(n+c) は、同じくらいの値になる)。
ということは非常に大きい自然数nの周辺では、引数nを1増やしたときのg(n)の変化量はほぼ一定(≒log(n))なので、xが非常に大きい部分で、xの大きさに比べて狭い範囲を見ると、g(n)の値はほぼ一直線上に並ぶ。
したがって、xが非常に大きいところでは、g(n)、g(n+1)、g(n+2)……を傾きlog(n)の直線で補間しても、ある程度の範囲では良い補間になっていると考えられる。またこの補間で、g(x)=g(x-1)+log(x) の関係もほぼ成り立っている。(log(x)≒log(n)なので。)

そしてnが大きければ大きいほど増加量の変化が小さくなる(nに比べてkが小さいとlog(n)とlog(n+k)はほぼ等しい値になる)ので、xが大きな値になればなるほど、この傾きlog(n)の直線による補間で適切な値に近い補間値が得られる。
そして、g(x) = g(x-1) + log(x) の関係を繰り返し使って

g(x-1) = g(x) - log(x)
g(x-2) = g(x) - log(x) - log(x-1)
g(x-3) = g(x) - log(x) - log(x-1) - log(x-2)

のように、大きなxでのg(x)の補間値を使って小さなxでのg(x)の値を決めてやれば、小さなxでのg(x)の値もどんどん適切な値に更新していくことができる。そして、その極限を考えてやれば、結局はg(x)の値を一意に決めることができて、その結果、階乗n!を補間した関数f(x)の値も一意に決まってしまうことになる。
結局、g(x)の値は次のように決められる。

  1. まず、xと比べて非常に大きい自然数nを取る。
  2. g(n+x)の値を、g(n)を通る傾きlog(n)の直線で近似して求める。g(n+x) ≒ g(n) + x・log(n)
  3. g(x) = g(x-1)+log(x) の関係を繰り返し(n回)使うことで、g(n+x)の値からg(x)の値を求める。
  4. そして、nをどんどん大きくしていった極限値をg(x)の正しい値だと決めてやる。

無限積による表示

ここまでの話に基づいて、n!をうまく補間した関数 f(x) を表す式を考える。
g(x) = log(f(x)) として、大きな自然数nに対して、g(n+x)の値を

g(n+x) ≒ g(n) + x・log(n)

と近似する。 これは

log(f(n+x)) ≒ log(n!)+ x・log(n)
log(f(n+x)) ≒ log(nx・n!)
f(n+x) ≒ nx・n!

と書き換えられる。f(x)=x・f(x-1)を繰り返し使うと左辺側は f(n+x) = (n+x)…(2+x)(1+x)f(x) となるので、

(n+x)…(2+x)(1+x)f(x) ≒ nx・n!

となり、両辺を (n+x)…(2+x)(1+x) で割って

 f(x) \approx \frac{ n^{x} \,  n! }{(x+1)(x+2)\cdots (x+n)}

となる。nが大きければ大きいほど傾きの近似が正確になっていくので、

 f(x) = \lim_{n\to\infty}\frac{ n^{x} \,  n! }{(x+1)(x+2)\cdots (x+n)}

となり、f(x)を無限積で表せた。
ここで導かれたf(x)はf(n)= n!となる関数だけど、通常はΓ(n)=(n-1)!となるガンマ関数Γ(x)が使われる。ガンマ関数の無限積は

 \Gamma(x) \, = f(x-1) \, = \frac{f(x)}{x}  \, = \lim_{n\to\infty}\frac{ n^{x} \,  n! }{x(x+1)(x+2)\cdots (x+n)}

となる。

対数凸性による見積もり

もう少し詳しい見積もりをしてみる。
上の式を導くときに「xが大きいところではg(x)の増加の割合がlog(x)で近似できる」ということを使ったけれど、このことはg(x)が単調増加であることを保証する次の条件

  • g(x) (つまりlog(f(x)) )は凸関数である (= f(x)は対数凸関数である)

を与えると導くことができる。
g(x)が凸関数とすると、n \frac{g(n)-g(n-1)}{1} \leq \frac{g(x)-g(n)}{x-n} \leq \frac{g(n+1)-g(n)}{1}

が成り立ち、すなわち

\log(n) \leq \frac{g(x)-g(n)}{x-n} \leq \log(n+1)

となり、xが自然数でない場所も含めてg(x)の増加率≒log(x) となって g(n)とg(n+1)がほぼ直線的に補間されることが保証される。
f(x)の無限積を導くときに使った

g(n+x) ≒ g(n) + x・log(n)

という近似式については、xより大きい自然数cを取って固定し、nをxより非常に大きい自然数として、g(x)の凸性を使うと、

\begin{eqnarray}\frac{g(n)-g(n-1)}{1} & \leq & \frac{g(n+x)-g(n)}{x} & \leq & \frac{g(n+c)-g(n+c-1)}{1}  \\ \log(n) & \leq & \frac{g(n+x)-g(n)}{x} & \leq & \log(n+c) \\  x\cdot\log(n) & \leq & g(n+x)-g(n) & \leq & x\cdot\log(n+c) \\ x\cdot\log(n)+g(n) & \leq & g(n+x) & \leq & x\cdot\log(n+c)+g(n) \end{eqnarray}

という形で導かれる。さらに変形していくと

\begin{eqnarray} x\cdot\log(n)+\log(n!) & \leq & \log(f(n+x)) & \leq & x\cdot\log(n+c)+\log(n!) \\  \log(n^x n!) & \leq & \log(f(n+x)) & \leq & \log((n+c)^x n!) \\ n^x n! & \leq & f(n+x) & \leq & (n+c)^x n! \end{eqnarray}

となり、左側の不等式について f(n+x)= (n+x)…(2+x)(1+x)f(x)を使って変形すると

\frac{n^x n!}{(x+1)(x+2)\cdots (x+n)} \leq f(x)

となる。
nは大きい自然数なら何でもよかったので、右側の不等式については、n+cを改めてnに置き直して f(n-c+x) ≦ nx (n-c)! という式にして f(n-c+x) = (n-c+x)…(2+x)(1+x)f(x) を使うと

f(x) \leq \frac{n^x (n-c)!}{(x+1)(x+2)\cdots (x+n-c)}

となり、右辺の分子分母に下降階乗 nc = n(n-1)…(n-c+1) をかけると

f(x) \leq \frac{n^x n!}{(x+1)(x+2)\cdots (x+n-c)}\cdot\frac{1}{n^{\underline{c}}}

となり、さらに分子分母に下降階乗 (n+x)c = (n+x)(n+x-1)…(n+x-c+1) をかけ変形すると

\begin{eqnarray}  f(x) & \leq & \frac{n^x n!}{(x+1)(x+2)\cdots (x+n)}\cdot\frac{(n+x)^{\underline{c}}}{n^{\underline{c}}} \\ \frac{n^{\underline{c}}}{(n+x)^{\underline{c}}}\cdot f(x) & \leq & \frac{n^x n!}{(x+1)(x+2)\cdots (x+n)} \end{eqnarray}

となる。下降階乗ふたつによる分数の部分は分子分母どちらも項数がc個なので上下1個ずつ組みにすると、nを大きくしたとき1に近づいていくことが分かる。前の不等式と合わせて

 \frac{n^{\underline{c}}}{(n+x)^{\underline{c}}}\cdot f(x)  \leq  \frac{n^x n!}{(x+1)(x+2)\cdots (x+n)} \leq f(x)

となり、

 f(x) = \lim_{n\to\infty}\frac{ n^{x} \,  n! }{(x+1)(x+2)\cdots (x+n)}

が成り立つ。

積分による定義

次にガンマ関数の無限積

 \Gamma(x)   \, = \lim_{n\to\infty}\frac{ n^{x} \,  n! }{x(x+1)(x+2)\cdots (x+n)}

を変形していき、ガンマ関数の定義によく使われる

 \Gamma(x) = \int_0^{\infty} t^{x-1}e^{-n}dt

を導きたい。
無限積の式の、 \frac{1}{x(x+1)(x+2)\cdots (x+n)} と n! の部分に注目する。
まず g(t) = tx-1 という関数(あるいは g(t) = (t+α)x-1 という関数)を取って、tについて n+1回積分していくと

t^{x-1} \,\to^{(1)} \, \frac{1}{x} t^{x} \,\to^{(2)} \, \frac{1}{x(x+1)} t^{x+1} \,\to^{(3)} \cdots \\ \quad \cdots  \to^{(n)} \, \frac{1}{x(x+1)\cdots(x+n-1)} t^{x+n-1} \to^{(n+1)} \, \frac{1}{x(x+1)\cdots(x+n)} t^{x+n}

となり、係数部分に \frac{1}{x(x+1)(x+2)\cdots (x+n)}が出てくる。

同様に h(t) = tn とか h(t) = (t+β)n を tについて n回微分すると

 t^n \,\to^{(1)} \, n t^{n-1} \,\to^{(2)} \, n(n-1) t^{n-2} \,\to^{(3)}\,  \cdots  \,\to^{(n-1)} \,n(n-1)\cdots 2 t \,\to^{(n)} \,n(n-1)\cdots 2 \cdot1 = n!

となり、n! が出てくる。

このように g(t)に対して積分を繰り返して、h(t)に対して微分を繰り返していくと、無限積の式の一部分と似た式が出てくる。
ここから次に、g(t)に対する積分と h(t)に対する微分を同時に行う操作として、部分積分の公式

\int_a^b g(t)h(t)\,dt = \left. G(t)h(t) \right|_a^b \,- \int_a^b G(t) h'(t) dt

を思い浮かべる。ここで関数g(t)、h(t)と積分区間をうまく選ぶことで  \left. G(t)h(t) \right|_a^b の部分とマイナス符号の影響を消してやる。
試行錯誤して g(t)= tx-1、h(t)= (1-t)n を選び、これに部分積分を繰り返し行うと

\int_0^1  t^{x-1} (1-t)^n dt \,=\frac{n}{x} \int_0^1  t^{x}(1-t)^{n-1} dt \,= \frac{n(n-1)}{x(x+1)} \int_0^1 t^{x+1} (1-t)^{n-2}  dt \\ \quad =\cdots=\frac{n(n-1)\cdots1}{x(x+1)\cdots(x+n-1)} \int_0^1  t^{x+n-1} dt \,=\frac{n!}{x(x+1)\cdots(x+n-1)(x+n)}

となる。これを無限積

 \Gamma(x) \, = \lim_{n\to\infty}\frac{ n^{x} \,  n! }{x(x+1)(x+2)\cdots (x+n)}

と比べると、

 \Gamma(x) \, = \lim_{n\to\infty}\left( n^x \int_0^1 t^{x-1}(1-t)^{n} dt\right) \,= \lim_{n\to\infty}\int_0^1 n^x \, t^{x-1}(1-t)^{n} dt

となる。この積分で nt=s と変数変換してみると、

 \lim_{n\to\infty}\int_0^1 n^x \, t^{x-1}(1-t)^{n} dt =\lim_{n\to\infty}\int_0^{n} s^{x-1} \left(1-\frac{s}{n}\right)^{n} ds

となる。ここで\left(1-\frac{s}{n}\right)^nの部分は増加しながら e-n に近づいていき、

 \lim_{n\to\infty}\int_0^{n} s^{x-1} \left(1-\frac{s}{n}\right)^{n} ds = \int_0^{\infty} s^{x-1}e^{-n}ds

が成り立つ。こうして積分によるガンマ関数の定義式

 \Gamma(x) = \int_0^{\infty} t^{x-1}e^{-n}dt

が得られた。