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



1. ポリガンマ関数とは
\[ \psi^{(n)}(z) = \frac{d^{n+1}}{dz^{n+1}} \log \Gamma(z) = \frac{d^n}{dz^n} \psi(z) \]

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


\[ \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
ライブラリでは以下のように使用できます。
from scipy.special import polygamma
# 第 n 次ポリガンマ関数 ψ^(n)(z) の計算
n = 1 # 一次ポリガンマ関数
z = 5
result = polygamma(n, z)
print(result)
このようにして、ポリガンマ関数を計算することができます。