更新:2024/09/15

ポリガンマ関数の漸化式とPythonのSciPyを利用した数値計算

はるか
はるか
ポリガンマ関数について話す?
ふゅか
ふゅか
うん!ポリガンマ関数はガンマ関数の n 階導関数の対数を取ったものよ。

1. ポリガンマ関数とは

ポリガンマ関数(polygamma function)$ \psi^{(n)}(z) $はガンマ関数の \(n+1\) 階導関数の対数を取ったものです。ポリガンマ関数は、次の式で定義されます。

\[ \psi^{(n)}(z) = \frac{d^{n+1}}{dz^{n+1}} \log \Gamma(z)  = \frac{d^n}{dz^n} \psi(z) \]

はるか
はるか
n=0のときをディガンマ関数という。
ディガンマ関数については次の記事で解説しています。

ディガンマ関数の定義・証明・基本的な性質・Pythonによる計算

1.1. ポリガンマ関数の漸化式

はるか
はるか
漸化式はどうなる?
ふゅか
ふゅか
例えば、$n$ 次のポリガンマ関数 $\psi^{(n)}(z+1)$ の漸化式は次のように表されるわ。

$n$ 次のポリガンマ関数 $\psi^{(n)}(z)$ の漸化式は次のようになります。

\[ \psi^{(n)}(z+1) = \psi^{(n)}(z) + (-1)^n \frac{n!}{z^{n+1}} \]


$n$ 次のポリガンマ関数を求めるために、次の漸化式を利用します。

\[ \psi(z+1) = \psi(z) + \frac{1}{z} \]

次に、この式を $n$ 回微分して一般の $n$ 次ポリガンマ関数の漸化式を求めます。まず、1回微分すると次のようになります。

\[ \psi^{(1)}(z+1) = \frac{d}{dz} \psi(z+1) = \frac{d}{dz} \left(\psi(z) + \frac{1}{z}\right) = \psi^{(1)}(z) – \frac{1}{z^2} \]

よって、n階微分すると次のようになります。

\[ \psi^{(n)}(z+1) = \frac{d^n}{dz^n} \left(\psi(z) + \frac{1}{z}\right) = \psi^{(n)}(z) +\frac{d^n}{dz^n} \frac{1}{z} \]

したがって、$\frac{d^n}{dz^n} \frac{1}{z}$ を計算する必要があることがわかります。
$y=\frac{1}{z}$の与えられた微分のパターンを確認してみましょう。

1回微分:
\[ y’ = -\frac{1}{z^2} \]

2回微分:
\[ y” = \frac{d}{dx} \left( -\frac{1}{x^2} \right) = \frac{2}{z^3} \]

3回微分:
\[ y”’ = \frac{d}{dx} \left( \frac{2}{x^3} \right) = -\frac{6}{z^4} \]

このパターンに基づくと、n回微分は以下の式となります。
\[ y^{(n)} = (-1)^n \cdot \frac{n!}{z^{n+1}} \]

したがって、$n$ 次ポリガンマ関数の漸化式は次のように示されます。

\[ \psi^{(n)}(z+1) = \psi^{(n)}(z) + (-1)^n \frac{n!}{z^{n+1}} \]

2. Pythonを利用した数値計算

はるか
はるか
数値計算は?
ふゅか
ふゅか
Pythonのscipyライブラリで計算できるわ。例えば、こんな感じで。

ポリガンマ関数は数値計算ライブラリで実装されています。例えば、Pythonのscipyライブラリでは以下のように使用できます。

from scipy.special import polygamma

# 第 n 次ポリガンマ関数 ψ^(n)(z) の計算
n = 1  # 一次ポリガンマ関数
z = 5
result = polygamma(n, z)
print(result)

このようにして、ポリガンマ関数を計算することができます。

PR