GNUPLOT

- not so Frequently Asked Questions -

update 2004/12/04

球面調和関数

極座標で表された球面調和関数 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