超幾何関数について

概要

超幾何関数を理解するために計算を中心に記載してゆく。超幾何関数に必要な関数も計算してゆく。

\(\Gamma\) 関数

(薮下 1991) の最初にある以下の数式を計算する。

\[ \Gamma(z)=e^{-C z} \frac{1}{z \prod_{n=1}^{\infty}\left(1+\frac{z}{n}\right) e^{-z / n}} \]

import numpy as np
from scipy.special import gamma as sp_gamma

def my_gamma(z):
    C = 0.57721
    return np.exp(-C*z) / (z *np.cumprod([(1 + z/n)*np.exp(-z/n) for n in range(1, 1000)])[-1])

my_gamma(10.0), sp_gamma(10.0)

import matplotlib.pyplot as plt

x = np.linspace(1.0, 5.0, 10000)
plt.clf()
plt.plot(x, sp_gamma(x), label="scipy.special.gamma")
plt.plot(x, my_gamma(x), label="mine")
plt.legend()
plt.savefig(outfile)

outfile
qZ1E-8HX9ZsTI.png

参考文献

薮下 信. 1991. 特殊関数とその応用. 第6刷 ed. 森北出版. https://ci.nii.ac.jp/ncid/BN09363031.