gnuplot / spherical_harmonics / spharm (1)

球面調和関数

極座標で表された球面調和関数 Y[lm](θ,φ)は次式で与えられます.

eq

ここで,P[lm]はLegendreの陪関数です.lとmは整数で,l=0,1,2,3…の値
をとり,mは各lの値に対して m=-l,-l+1,…l-1,lの,計2l+1個の値を取るこ
とができます.この関数は,2乗してθとφで積分すると1になるように規格化
されています.積分区間はθは0〜π,φは0〜2πです.

coordinate2

gnuplotのparametric表示では,角度uがφと一致しますが,θの定
義は異なります.左の図から θ=π/2-vですので,この関係は,

cos(theta)=sin(v)
sin(theta)=cos(v)

となります.


球面調和関数の最も簡単なものはl=0,m=0の場合で,これは定数 1/sqrt(4π)
になります.これを2乗した|Y[00]|^2=1/4πも当然定数で,これは半径1/4πの
球です.関数は規格化されているので,この関数を全立体角(4π)で積分する
と1になります.gnuplotでこれを描くのは簡単で,
前項で使った方法で,その半径を変えるだけで
す.

gnuplot> set parametric

dummy variable is t for curves, u/v for surfaces
gnuplot> set angle degree
gnuplot> set urange [0:360]
gnuplot> set vrange [-90:90]
gnuplot> set isosample 36,18
gnuplot> set ticslevel 0
gnuplot> set size 0.65,1.0
gnuplot> a=1.0/(4*pi)
gnuplot> fx(u,v)=cos(u)*cos(v)
gnuplot> fy(u,v)=sin(u)*cos(v)
gnuplot> fz(v)=sin(v)
gnuplot> splot a*fx(u,v),a*fy(u,v),a*fz(v)

sph00

左がY[00]を自乗したグラフで,原点を中心に半径1/4πの球です.m=0なの
でexp(-imφ)の項は消え,φへの依存性はありません.球面調和関数は,mが
偶数の時は実関数ですが,mが奇数のときは虚部を持ちます.


次にl=1,m=0の関数Y[1,0]を表示します.Y[00]と同様,m=0なのでφの項
は消え,この関数の表式は Y(θ)=sqrt(3/4π)cosθ となります.上に書いて
あるとおり,cosθはsin(v)で与えられるので,この項をx,y,z座標にかけるこ
とでこの関数を表示できます.上と同様に|Y[10]|^2=3/4π cos^2θ を表示
します.

gnuplot> a=3.0/(4*pi)
gnuplot> g(v)=sin(v)*sin(v)
gnuplot> splot a*g(v)*fx(u,v),a*g(v)*fy(u,v),a*g(v)*fz(v)

sph10

変数uの範囲を[0:180]にして隠線処理すると,球面調和関数の断面を表示で
きます.

gnuplot> set urange [0:180]
gnuplot> set hidden3d
gnuplot> splot a*g(v)*fx(u,v),a*g(v)*fy(u,v),a*g(v)*fz(v)

sph10

from Dr.Nakamura of TUS. Thanks !
up