今回は,円筒座標系において熱伝導方程式を解くための前準備として,を参考にベッセルの微分方程式についてまとめておく.
確定特異点
dz2d2u+P(z)dzdu+Q(z)u=0
(1)において,P(z)またはQ(z)がz=aにおいて極(pole)をもち,かつその点において(z−a)P(z)および(z−a)2Q(z)は正則であるとする.このとき極z=aを(1)の確定特異点(Regular Singular Point)と呼ぶ.(複素平面上ある変域内のいずれの点においてもf′(z)が存在する場合には、関数f(z)はその変域内において正則であるといい、このような関数を正則関数という。また、ある変域内で正則な関数は、その辺域内において何回微分しても正則である。これをGoursatの定理という)
p(z−a)=(z−a)P(z)およびq(z−a)=(z−a)2Q(z)とおくと,(1)は次のように書き換えられる.
dz2d2u+z−ap(z−a)dzdu+(z−a)2q(z−a)u=0
また,p(z−a)およびq(z−a)はz=aの周りで正則なので,以下のようにTaylor展開できる.
p(z−a)q(z−a)=p0+(z−a)p1+(z−a)2p2+...=q0+(z−a)q1+(z−a)2q2+...
(1)の解として以下の無限級数を仮定し、λおよびAnを定める.
u=(z−a)λ{A0+n=1∑∞An(z−a)n}
ただし,uの一階微分,二階微分はそれぞれ以下のように表される.
dzdudz2d2u=λ(z−a)λ−1{A0+n=1∑∞An(z−a)n}+(z−a)λ{n=1∑∞nAn(z−a)n−1}=(z−a)λ−1{λA0+n=1∑∞(λ+n)An(z−a)n}=(λ−1)(z−a)λ−2{λA0+n=1∑∞(λ+n)An(z−a)n}+(z−a)λ−1{n=1∑∞n(λ+n)An(z−a)n−1}=(z−a)λ−2{(λ−1)λA0+n=1∑∞(λ+n−1)(λ+n)An(z−a)n}
(z−a)λ−2{(λ−1)λA0+n=1∑∞(λ+n−1)(λ+n)An(z−a)n} +(z−a)λ−2p(z−a){λA0+n=1∑∞(λ+n)An(z−a)n} +(z−a)λ−2q(z−a){A0+n=1∑∞An(z−a)n}=0
(z−a)について低次の項から,整理すると以下のように表される.
A0{(λ−1)λ+p0λ+q0}=0A0(p1λ+q1)+A1{λ(λ+1)+p0(λ+1)+q0}=0A0(p2λ+q2)+A1{p1(λ+1)+q1}+A2{(λ+1)(λ+2)+p0(λ+2)+q0}=0⋮
これは一般に次のように表すことができる.
A0ϕ(λ)=0A1ϕ(λ+1)+A0ϕ1(λ)=0A2ϕ(λ+2)+A1ϕ1(λ+1)+A0ϕ2(λ)=0⋮Anϕ(λ+n)+⋯+A0ϕn(λ)⋮
where{ϕ(λ)=λ2+(p0−1)λ+q0ϕn(λ)=λpn+qn(n=1,2,3,⋯)
(z−a)についてゼロ次の項から,確定特異点z=aにおける指数を定める式が得られる.
ϕ(λ)≡λ2+(p0−1)λ+q0=0
ここでの目的は,(1)の特解を得ることなのでA0=1とおいてよい.ϕ(λ+n)がゼロでない限りそれぞれのλに対して,A1,A2,...が一義的に定まり,以下の特解が得られる.一般解はこれらの線形結合として表される.
u1u2=(z−a)λ1{1+n=1∑∞An1(z−a)n}=(z−a)λ2{1+n=1∑∞An2(z−a)n}
ベッセルの微分方程式
dz2d2y+z1dzdy+(1−z2n2)y=0
ベッセルの微分方程式は(6)のように表され,x=0はその確定特異点である.p(x)=1およびq(x)=x2−n2とおけて,(5)よりλが以下の式より得られる.
ϕ(λ)≡λ2−n2=0
λ1=nのとき,以下の形の特解が存在する.
y=xn(1+A1x+⋯+Amxm+⋯)
(4)よりϕ1=0,ϕ2=1,ϕ3=0,ϕ4=0,⋯なので,係数A0,A1,⋯は以下のように求められる.
Am=−ϕ(λ+m)Am−2=ϕ(λ+m)−1ϕ(λ+m−2)−Ai−4=ϕ(λ+m)−1ϕ(λ+m−2)−1⋯ϕ(λ+2)−A0
A2m=m!22m(n+1)(n+2)⋯(n+m)(−1)m
このように得られた解に定数1/2nΓ(n+1)をかけたものを,Bessel Function of the first kindと呼ぶ.λ2=−nの解は,nの符号を変えれば得られて,それぞれ以下のように表される.
Jn(x)J−n(x)=m=0∑∞m!Γ(n+m+1)(−1)m(2x)n+2m=m=0∑∞m!Γ(−n+m+1)(−1)m(2x)−n+2m
nが整数でない場合には,JnとJ−nは別の関数となるので,(6)の一般解は次のように表される.
y=C1Jn(x)+C2J−n(x)
変形ベッセル関数
(6)の変数としてizをとると,以下のように変形できる.
d(iz)2d2v(iz)+iz1d(iz)dv(iz)+(1−(iz)2n2)v(iz)=0−dz2d2v(iz)−z1dzdv(iz)+(1+z2n2)v(iz)=0
ただし,iを含む微分は次のように表すことができる.
dzd(iz)d(iz)d=dzd, d(iz)d=−idzd, d(iz)2d2=−dz2d2
u(z)=v(iz)を新しくとると,Modified Bessel’s Differential Equationが得られる.
dz2d2u+z1dzdu−(1+z2n2)u=0
Bessel Functionにizを代入したものが特解となるが,一般的にはe−21νπiJν(iz)を使用する.
Iν=m=0∑∞m!Γ(ν+m+1)1(2z)ν+2m
また,e21νπiJν(iz)も(14)の解となる.
I−ν=m=0∑∞m!Γ(−ν+m+1)1(2z)−ν+2m
応用上は,e21νπiJν(iz)を(13)の特解としては採用せず,以下の関数を用いる.
Kν(z)=2πsinνπI−ν(z)−Iν(z)
プログラム上で第1種変形ベッセル関数(14),第2種変形ベッセル関数(16)を使用する場合,例えば以下のような関数を用いることが出来る.次数νは整数でなくてもよいが,実数でなくてはならない.変数zは複素数をとる.
modified Bessel function of the 1st kind, modified Bessel function of the 2nd kind, MATLAB: besseli(ν,z), Python: scipy.special.iv(ν,z)MATLAB: besselk(ν,z), Python: scipy.special.kv(ν,z)