[Pythonによる科学・技術計算]scipy利用による物理学で使われる(特殊)関数の利用法リスト

#はじめに

scipy.specialパッケージで物理学分野に出てくる(特殊)関数を利用できる[1]。

```py3

from scipy.special import *
```

**Pythonを用いた科学・技術計算を行う際に適宜参照できるよう，代表的な(特殊)関数の利用法(関数名や引数など)を以下にまとめておく。**
なお，オプションに関する詳しい説明は公式ページ[1]を参照されたい。
特殊関数の定義については参考文献[2]にわかりやすく記述されており参考になる。

本稿は必要に応じて加筆・修正する予定である。

● 2017 8月7日: 第一種および第二種完全楕円積分を追加した。
***

#エルミート(Hermite)多項式
 $H_n(x)=n!\sum_{m=0}^{\lfloor n / 2 \rfloor}\dfrac{(-1)^m(2x)^{n-2m}}{m!(n-2m)!}$
($\lfloor \rfloor$は[ガウス記号](https://ja.wikipedia.org/wiki/%E5%BA%8A%E9%96%A2%E6%95%B0%E3%81%A8%E5%A4%A9%E4%BA%95%E9%96%A2%E6%95%B0)である)

**物理学における応用例**:量子力学における定常状態のシュレディンガー方程式に対する線形復元力ポテンシャルに対する固有解[3]，など。

```py3
#利用法
from scipy.special import *
eval_hermite(n, x)
```

***

#ルジャンドル(Legendre)多項式

$\begin{align} P_n(x) =  2^n\cdot \sum_{k=0}^n x^k {n \choose k}{\frac{n+k-1}2\choose n}\end{align}$

物理学における応用例: [ラプラス方程式](https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%97%E3%83%A9%E3%82%B9%E6%96%B9%E7%A8%8B%E5%BC%8F)[4]，三次元中心力場のシュレディンガー方程式[4]，電磁気学における[多重極展開](https://en.wikipedia.org/wiki/Multipole_expansion)[4]などで現れる。

```py3
#利用法
eval_legendre(n, x)
```

##ルジャンドル陪多項式 (Associated Legendre polynomials)
$P_n{}^m (t) = 
{1\over 2^n} (1-t^2)^{m \over 2}
\sum_{j=1}^{\lfloor (n-m) / 2\rfloor}
{(-1)^j (2n-2j)! \over j!(n-j)!(n-2j-m)!}t^{n-2j-m}$
($n\leq m$, $\ $$|t|\leq 1$)

**物理学における応用例**:ラプラス方程式の解， 球面調和関数の表現

```py3
#利用法
lpmv(m, n, t)
```
***

#ラゲール(Laguerre)多項式
$L_n(x) = \sum_{k=0}^n (-1)^k {n \choose k} \frac{n!}{k!} x^k $

**物理学における応用例**:クーロンポテンシャル下における動径方向のシュレディンガー方程式の解[4]。

```py3
#利用法
eval_laguerre(n, x)
```
***




#球面調和関数(Spherical harmonics)
${{Y_{l}^{m}(\theta, \phi)
=(-1)^{(m+|m|)/2}\sqrt{ \frac{2l+1}{4\pi}\frac{(l-|m|)!}{(l+|m|)!} \,}
\,P_l^{|m|}(\cos\theta)\,e^{im\phi}}}$

ここで $l\geq |m|$,  $P_l^{|m|}$はルジャンドル陪多項式。

**物理学における応用例**:球対称ポテンシャルに対する1粒子定常状態のシュレディンガー方程式を変数分離した際に現れる[3]。また，角度方向に対して完全系をなすため，角度依存性を持つ関数の展開基底としてしばしば用いられる。

```py3
#利用法
sph_harm(m, l, theta, phi)
```
***
##ガンマ(Gamma)関数
$\Gamma(z)=\int^{\infty}_{0}t^{z-1}e^{-t}\,dt\qquad$ $(Re(z)>0)$

**物理学における応用例**: 統計力学でしばしば現れる。自由フェルミ電子系の比熱式[3,5]， [スターリングの公式](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E8%BF%91%E4%BC%BC)の導出(Γ関数の漸近展開)[5]，など。

```py3
#利用法
gamma(z)
```


#ポリガンマ(Polygamma)関数
ガンマ関数の対数微分，
$\psi^{(n)}(z) 
 = \frac{d^{n+1}}{dz^{n+1}} \ln{\Gamma(z)}  = \frac{d^n}{dz^n} \psi(z) $
をポリガンマ関数という。しばしば使われる。

```py3
#利用法
polygamma(n, x)
```

***

#ベータ(Beta)関数

${\beta(x,y) = \int_0^1t^{x-1}(1-t)^{y-1}\,dt} =\frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)}$
(ここでx, yは$Re \ x > 0, Re\ y>0$ を満たす複素数である)

```py3
#利用法
beta(x, y)
```

***

#ベッセル(Bessel)関数: 
**物理学における応用例**:ラプラス方程式[5]，ヘルムホルツ方程式を柱座標系または極座標系で解く際に現れる[4]。電磁波の伝播，円柱物体の熱伝導，薄い膜の振動解[6]など。

###第1種ベッセル関数
```py3
#利用法
jn(n, z) # 整数次ベッセル関数
jv(v, z) #一般次数のベッセル関数 
```

###第2種ベッセル関数
```py3
#利用法
yn(n,x) # 整数次
yv(v,z) #一般次数
```


### ハンケル(Hankel)関数: 
ベッセルの微分方程式に対する特殊解

```py3
#利用法
hankel1(v, z) # 第一種ハンケル関数
```

###変形ベッセル(Modified Bessel)関数


純虚数変数に対する[ベッセルの微分方程式](https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%83%E3%82%BB%E3%83%AB%E9%96%A2%E6%95%B0)の特殊解。

```py3
#利用法
kn(n,x) #整数次
kv(v,z) #一般次数
```

###球ベッセル(Spherical Bessel)関数 
$J_n(z)$

**物理学における応用例**: 球座標系における自由粒子のシュレディンガー方程式の正則な解(非正則解は球ノイマン関数である)[3]，など。

```py3
#利用法
spherical_jn(n, z, derivative=False)
```
***

#エアリー(Airy )関数
$\begin{align} \operatorname{Ai}(x)
 & = \frac{1}{\pi}\int_0^\infty\cos(\tfrac{t^3}{3} + xt)\mathit{dt}\\
 \equiv \frac{1}{\pi}\lim_{b\to\infty} \int_0^b \cos(\tfrac{t^3}{3} + xt)\mathit{dt}\end{align}</math>$

**物理学における応用例**:量子力学における[WKB法](https://ja.wikipedia.org/wiki/WKB%E8%BF%91%E4%BC%BC)[3]による古典的回帰点をつなぐ解，など。

```py3
#利用法
airy(z)
```

***

#マシュー(Mathieu)関数 (楕円柱関数)
**物理学における応用例**:楕円形膜の振動[6],強制振動におけるパラメータ励起[6]， 三角関数型のポテンシャルに対する定常状態のシュレディンガー方程式の解[3]，一般相対性理論における[アインシュタイン方程式](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%A4%E3%83%B3%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E6%96%B9%E7%A8%8B%E5%BC%8F)の平面波解の表現，など。

```py3
#利用法
mathieu_a(m, q) #マシュー余弦関数
mathieu_b(m, q) #マシュー正弦関数

```
***

#完全楕円積分 (Complete elliptic integral)
**物理学における応用例**:大振幅の振り子の運動[6]，統計力学での2次元イジングモデルの厳密解などにあらわれる。


###第一種完全楕円積分
${K(k)=\int_0^{\pi/2}{\frac{1}{\sqrt{1-k^2\sin^2\theta}}}d\theta}$
$m=k^2<1$として，

```py3
#利用法: ellipk(m)

a=ellipk(0.45)
print(a)
```
結果: 1.81388393682



###第二種完全楕円積分
${E(k)=\int_0^{\pi/2}{\sqrt{1-k^2\sin^2\theta}}d\theta}$

$m=k^2 \le 1$として，

```py3
#利用法: ellipe(m)
a=ellipe(0.9)
print(a)
```
結果: 1.1047747327


***

#参考文献
<a name="aaa"></a>

[1] Scipy公式: [Special functions](https://docs.scipy.org/doc/scipy/reference/special.html)

[2] 小野寺 嘉孝　著，[物理のための応用数学](https://www.amazon.co.jp/%E7%89%A9%E7%90%86%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%BF%9C%E7%94%A8%E6%95%B0%E5%AD%A6-%E5%B0%8F%E9%87%8E%E5%AF%BA-%E5%98%89%E5%AD%9D/dp/4785320311/ref=sr_1_2?s=books&ie=UTF8&qid=1501826776&sr=1-2&keywords=%E5%B0%8F%E9%87%8E%E5%AF%BA+%E5%98%89%E5%AD%9D)， 裳華房, (1988); 寺沢寛一 著, [自然科学者のための数学概論](https://www.amazon.co.jp/%E8%87%AA%E7%84%B6%E7%A7%91%E5%AD%A6%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%95%B0%E5%AD%A6%E6%A6%82%E8%AB%96-%E5%A2%97%E8%A8%82%E7%89%88-%E5%AF%BA%E6%B2%A2-%E5%AF%9B%E4%B8%80/dp/4000054805/ref=sr_1_1?s=books&ie=UTF8&qid=1501697831&sr=1-1&keywords=%E8%87%AA%E7%84%B6%E7%A7%91%E5%AD%A6%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%95%B0%E5%AD%A6%E6%A6%82%E8%AB%96), 岩波書店, (1983); 犬井鉄郎 著, [特殊函数](https://www.amazon.co.jp/%E7%89%B9%E6%AE%8A%E5%87%BD%E6%95%B0-%E5%B2%A9%E6%B3%A2%E5%85%A8%E6%9B%B8-252-%E7%8A
%AC%E4%BA%95-%E9%89%84%E9%83%8E/dp/4000214128), 岩波書店, (1962).

[3] ランダウ・リフシッツ 著,  [量子力学](https://www.amazon.co.jp/%E9%87%8F%E5%AD%90%E5%8A%9B%E5%AD%A6%E2%80%95%E9%9D%9E%E7%9B%B8%E5%AF%BE%E8%AB%96%E7%9A%84%E7%90%86%E8%AB%96-1-%E3%83%A9%E3%83%B3%E3%83%80%E3%82%A6-%E3%83%AA%E3%83%95%E3%82%B7%E3%83%83%E3%83%84%E7%90%86%E8%AB%96%E7%89%A9%E7%90%86%E5%AD%A6%E6%95%99%E7%A8%8B-%E3%83%AC%E3%83%95%E3%83%BB%E3%83%80%E3%83%93%E3%83%89%E3%83%B4%E3%82%A3%E3%83%81%E3%83%BB%E3%83%A9%E3%83%B3%E3%83%80%E3%82%A6/dp/4489000588),東京図書, (1983); 後藤憲一 他編, [量子力学演習](https://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3%E7%90%86%E8%AB%96%E5%BF%9C%E7%94%A8%E9%87%8F%E5%AD%90%E5%8A%9B%E5%AD%A6%E6%BC%94%E7%BF%92-%E5%BE%8C%E8%97%A4-%E6%86%B2%E4%B8%80/dp/4320031717/ref=sr_1_1?s=books&ie=UTF8&qid=1501825682&sr=1-1&keywords=%E9%87%8F%E5%AD%90%E5%8A%9B%E5%AD%A6%E6%BC%94%E7%BF%92)， 共立出版, (1982).

[4] 砂川重信 著, [理論電磁気学](https://www.amazon.co.jp/%E7%90%86%E8%AB%96%E9%9B%BB%E7%A3%81%E6%B0%97%E5%AD%A6-%E7%A0%82%E5%B7%9D-%E9%87%8D%E4%BF%A1/dp/4314008547/ref=sr_1_1?s=books&ie=UTF8&qid=1501825922&sr=1-1&keywords=%E7%90%86%E8%AB%96%E9%9B%BB%E7%A3%81%E6%B0%97%E5%AD%A6) 第三版, 紀伊國屋書店,(1999).

[5] 久保亮五　編, [大学演習 熱学・統計力学](https://www.amazon.co.jp/%E5%A4%A7%E5%AD%A6%E6%BC%94%E7%BF%92-%E7%86%B1%E5%AD%A6%E3%83%BB%E7%B5%B1%E8%A8%88%E5%8A%9B%E5%AD%A6-%E4%B9%85%E4%BF%9D-%E4%BA%AE%E4%BA%94/dp/4785380322/ref=sr_1_1?s=books&ie=UTF8&qid=1501826038&sr=1-1&keywords=%E5%A4%A7%E5%AD%A6%E6%BC%94%E7%BF%92%E3%80%80%E7%86%B1%E5%AD%A6%E3%83%BB%E7%B5%B1%E8%A8%88%E5%8A%9B%E5%AD%A6), 修訂版, 裳華房, (1998).

[6] 戸田盛和　著, [振動論](https://www.amazon.co.jp/%E6%8C%AF%E5%8B%95%E8%AB%96-%E6%96%B0%E7%89%A9%E7%90%86%E5%AD%A6%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-3-%E6%88%B8%E7%94%B0-%E7%9B%9B%E5%92%8C/dp/4563024031/ref=sr_1_2?s=books&ie=UTF8&qid=1501826199&sr=1-2&keywords=%E6%8C%AF%E5%8B%95%E8%AB%96), 培風館, (1968).