球面調和関数

print("Definition of greek characters");//ギリシア文字定義
gth:=Symbol::theta;
gph:=Symbol::phi;

print("Legendre polynomial");//ルジャンドル多項式
Pl:=(x,n)->expand(1/2^n/n!*diff((x^2-1)^n,x$n));

print("Associated Legendre function");//ルジャンドル陪関数
Plm:=(x,l,m)->expand((-1)^m*(1-x^2)^(m/2)*diff(Pl(x,l),x$m));

print("applied absolute value");//絶対値化
Plm2:=(x,l,m)->piecewise([m<0,Plm(x,l,-m)],[Otherwise,Plm(x,l,m)]);
hold(Plm2)(x,3,3)=Plm2(x,3,3);
hold(Plm2)(x,3,-3)=Plm2(x,3,-3);

print("replace x->cos");//置換
Plm3:=(gth,l,m)->expand(subs(Plm2(x,l,m),x^2=1-sin(gth)^2,//ここに入れるのがミソ
                                  x=cos(gth),(sin(gth)^2)^(1/2)=sin(gth),
                                  (sin(gth)^2)^(3/2)=sin(gth)^3,(sin(gth)^2)^(5/2)=sin(gth)^5,
                                  (sin(gth)^2)^(7/2)=sin(gth)^7,(sin(gth)^2)^(9/2)=sin(gth)^9));
hold(Plm2)(x,1,-1)=Plm2(x,1,-1);
hold(Plm3)(gth,1,-1)=Plm3(gth,1,-1);
hold(Plm3)(gth,3,-3)=Plm3(gth,3,-3);
hold(Plm3)(gth,9,-7)=Plm3(gth,9,-7);

print("spherical harmonic function");//球面調和関数
Ylm:=(gth,gph,l,m)->(-1)^((m+abs(m))/2)*sqrt((2*l+1)/(4*PI)*(l-abs(m))!/(l+abs(m))!)*Plm3(gth,l,m)*E^(I*m*gph);

"Definition of greek characters"
`&theta;`
`&phi;`
"Legendre polynomial"
(x, n) -> expand(((1/2^n)/n!)*diff((x^2 - 1)^n, x $ n))
"Associated Legendre function"
(x, l, m) -> expand((-1)^m*(1 - x^2)^(m/2)*diff(Pl(x, l), x $ m))
"applied absolute value"
(x, l, m) -> piecewise([m < 0, Plm(x, l, -m)], [Otherwise, Plm(x, l, m)])
Plm2(x, 3, 3) = -15*(1 - x^2)^(3/2)
Plm2(x, 3, -3) = -15*(1 - x^2)^(3/2)
"replace x->cos"
(gth, l, m) -> expand(subs(Plm2(x, l, m), x^2 = 1 - sin(gth)^2, x = cos(gth), (sin(gth)^2)^(1/2) = sin(gth), (sin(gth)^2)^(3/2) = sin(gth)^3, (sin(gth)^2)^(5/2) = sin(gth)^5, (sin(gth)^2)^(7/2) = sin(gth)^7, (sin(gth)^2)^(9/2) = sin(gth)^9))
Plm2(x, 1, -1) = -(1 - x^2)^(1/2)
Plm3(`&theta;`, 1, -1) = -sin(`&theta;`)
Plm3(`&theta;`, 3, -3) = -15*sin(`&theta;`)^3
Plm3(`&theta;`, 9, -7) = (34459425*sin(`&theta;`)^9)/2 - 16216200*sin(`&theta;`)^7
"spherical harmonic function"
(gth, gph, l, m) -> (-1)^((m + abs(m))/2)*((((2*l + 1)/(4*PI))*(l - abs(m))!)/(l + abs(m))!)^(1/2)*Plm3(gth, l, m)*E^(I*m*gph)

計算結果を示します。

for l from 0 to 5 do
  for m from -l to l do
    print(hold(Ylm)(gth,gph,l,m)=Ylm(gth,gph,l,m));
    //print(hold(Ylm)(gth,gph,l,m)=Ylm(gth,gph,l,m));
  end_for
end_for;

Ylm(`&theta;`, `&phi;`, 0, 0) = 1/(2*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 1, -1) = -(3^(1/2)*8^(1/2)*exp(-`&phi;`*I)*sin(`&theta;`))/(8*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 1, 0) = (3^(1/2)*cos(`&theta;`))/(2*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 1, 1) = (3^(1/2)*8^(1/2)*exp(`&phi;`*I)*sin(`&theta;`))/(8*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 2, -2) = (5^(1/2)*96^(1/2)*exp(-2*`&phi;`*I)*sin(`&theta;`)^2)/(32*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 2, -1) = -(5^(1/2)*24^(1/2)*exp(-`&phi;`*I)*cos(`&theta;`)*sin(`&theta;`))/(8*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 2, 0) = -(5^(1/2)*((3*sin(`&theta;`)^2)/2 - 1))/(2*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 2, 1) = (5^(1/2)*24^(1/2)*exp(`&phi;`*I)*cos(`&theta;`)*sin(`&theta;`))/(8*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 2, 2) = (5^(1/2)*96^(1/2)*exp(2*`&phi;`*I)*sin(`&theta;`)^2)/(32*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 3, -3) = -(7^(1/2)*2880^(1/2)*exp(-3*`&phi;`*I)*sin(`&theta;`)^3)/(192*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 3, -2) = (7^(1/2)*480^(1/2)*exp(-2*`&phi;`*I)*(15*cos(`&theta;`) - 15*cos(`&theta;`)^3))/(480*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 3, -1) = -(7^(1/2)*48^(1/2)*exp(-`&phi;`*I)*(6*sin(`&theta;`) - (15*sin(`&theta;`)^3)/2))/(48*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 3, 0) = -(7^(1/2)*((3*cos(`&theta;`))/2 - (5*cos(`&theta;`)^3)/2))/(2*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 3, 1) = (7^(1/2)*48^(1/2)*exp(`&phi;`*I)*(6*sin(`&theta;`) - (15*sin(`&theta;`)^3)/2))/(48*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 3, 2) = (7^(1/2)*480^(1/2)*exp(2*`&phi;`*I)*(15*cos(`&theta;`) - 15*cos(`&theta;`)^3))/(480*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 3, 3) = (7^(1/2)*2880^(1/2)*exp(3*`&phi;`*I)*sin(`&theta;`)^3)/(192*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, -4) = (17920^(1/2)*exp(-4*`&phi;`*I)*(105*cos(`&theta;`)^4 + 210*sin(`&theta;`)^2 - 105))/(17920*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, -3) = -(3*2240^(1/2)*exp(-3*`&phi;`*I)*cos(`&theta;`)*sin(`&theta;`)^3)/(64*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, -2) = -(160^(1/2)*exp(-2*`&phi;`*I)*((105*cos(`&theta;`)^4)/2 + 60*sin(`&theta;`)^2 - 105/2))/(160*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, -1) = (3*80^(1/2)*exp(-`&phi;`*I)*((15*cos(`&theta;`)*sin(`&theta;`))/2 - (35*cos(`&theta;`)^3*sin(`&theta;`))/2))/(80*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, 0) = (3*((35*cos(`&theta;`)^4)/8 + (15*sin(`&theta;`)^2)/4 - 27/8))/(2*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, 1) = -(3*80^(1/2)*exp(`&phi;`*I)*((15*cos(`&theta;`)*sin(`&theta;`))/2 - (35*cos(`&theta;`)^3*sin(`&theta;`))/2))/(80*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, 2) = -(160^(1/2)*exp(2*`&phi;`*I)*((105*cos(`&theta;`)^4)/2 + 60*sin(`&theta;`)^2 - 105/2))/(160*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, 3) = (3*2240^(1/2)*exp(3*`&phi;`*I)*cos(`&theta;`)*sin(`&theta;`)^3)/(64*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 4, 4) = (17920^(1/2)*exp(4*`&phi;`*I)*(105*cos(`&theta;`)^4 + 210*sin(`&theta;`)^2 - 105))/(17920*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, -5) = -(11^(1/2)*14515200^(1/2)*exp(-5*`&phi;`*I)*sin(`&theta;`)^5)/(15360*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, -4) = (11^(1/2)*1451520^(1/2)*exp(-4*`&phi;`*I)*(945*cos(`&theta;`)^5 - 1890*cos(`&theta;`)^3 + 945*cos(`&theta;`)))/(1451520*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, -3) = -(11^(1/2)*80640^(1/2)*exp(-3*`&phi;`*I)*(420*sin(`&theta;`)^3 - (945*sin(`&theta;`)^5)/2))/(80640*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, -2) = -(11^(1/2)*3360^(1/2)*exp(-2*`&phi;`*I)*((315*cos(`&theta;`)^5)/2 - 210*cos(`&theta;`)^3 + (105*cos(`&theta;`))/2))/(3360*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, -1) = -(11^(1/2)*120^(1/2)*exp(-`&phi;`*I)*((315*cos(`&theta;`)^4*sin(`&theta;`))/8 + (105*sin(`&theta;`)^3)/4 - (195*sin(`&theta;`))/8))/(120*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, 0) = (11^(1/2)*((63*cos(`&theta;`)^5)/8 - (35*cos(`&theta;`)^3)/4 + (15*cos(`&theta;`))/8))/(2*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, 1) = (11^(1/2)*120^(1/2)*exp(`&phi;`*I)*((315*cos(`&theta;`)^4*sin(`&theta;`))/8 + (105*sin(`&theta;`)^3)/4 - (195*sin(`&theta;`))/8))/(120*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, 2) = -(11^(1/2)*3360^(1/2)*exp(2*`&phi;`*I)*((315*cos(`&theta;`)^5)/2 - 210*cos(`&theta;`)^3 + (105*cos(`&theta;`))/2))/(3360*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, 3) = (11^(1/2)*80640^(1/2)*exp(3*`&phi;`*I)*(420*sin(`&theta;`)^3 - (945*sin(`&theta;`)^5)/2))/(80640*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, 4) = (11^(1/2)*1451520^(1/2)*exp(4*`&phi;`*I)*(945*cos(`&theta;`)^5 - 1890*cos(`&theta;`)^3 + 945*cos(`&theta;`)))/(1451520*PI^(1/2))
Ylm(`&theta;`, `&phi;`, 5, 5) = (11^(1/2)*14515200^(1/2)*exp(5*`&phi;`*I)*sin(`&theta;`)^5)/(15360*PI^(1/2))

グラフ表示しました。赤~青が実数部分、黄~緑が虚数です。

for l from 0 to 5 do
  for m from -l to l do
    S:=Ylm(gth,gph,l,m);
    print(hold(Ylm)(gth,gph,l,m)=S);
    plot(
    plot::Spherical([real(S),gph,gth],gth=-PI..PI,gph=0..PI,
    UMesh=60,VMesh=60,FillColor=[1,0,0],FillColor2=[0,0,1]),
   
plot::Spherical([imag(S),gph,gth],gth=-PI..PI,gph=0..PI,
    UMesh=60,VMesh=60,FillColor=[1,1,0],FillColor2=[0,1,1]),

    Scaling=Constrained);
  end_for
end_for;
//plot(plot::Spherical([real(Ylm(gth,gph,3,-1)),gph,gth],
//gth=-PI..PI,gph=0..PI,UMesh=60,VMesh=60,FillColorType=Flat,
//Color=[0.5,0.5,0.5]),Scaling=Constrained);

Ylm(`&theta;`, `&phi;`, 0, 0) = 1/(2*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 1, -1) = -(3^(1/2)*8^(1/2)*exp(-`&phi;`*I)*sin(`&theta;`))/(8*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 1, 0) = (3^(1/2)*cos(`&theta;`))/(2*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 1, 1) = (3^(1/2)*8^(1/2)*exp(`&phi;`*I)*sin(`&theta;`))/(8*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 2, -2) = (5^(1/2)*96^(1/2)*exp(-2*`&phi;`*I)*sin(`&theta;`)^2)/(32*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 2, -1) = -(5^(1/2)*24^(1/2)*exp(-`&phi;`*I)*cos(`&theta;`)*sin(`&theta;`))/(8*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 2, 0) = -(5^(1/2)*((3*sin(`&theta;`)^2)/2 - 1))/(2*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 2, 1) = (5^(1/2)*24^(1/2)*exp(`&phi;`*I)*cos(`&theta;`)*sin(`&theta;`))/(8*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 2, 2) = (5^(1/2)*96^(1/2)*exp(2*`&phi;`*I)*sin(`&theta;`)^2)/(32*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 3, -3) = -(7^(1/2)*2880^(1/2)*exp(-3*`&phi;`*I)*sin(`&theta;`)^3)/(192*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 3, -2) = (7^(1/2)*480^(1/2)*exp(-2*`&phi;`*I)*(15*cos(`&theta;`) - 15*cos(`&theta;`)^3))/(480*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 3, -1) = -(7^(1/2)*48^(1/2)*exp(-`&phi;`*I)*(6*sin(`&theta;`) - (15*sin(`&theta;`)^3)/2))/(48*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 3, 0) = -(7^(1/2)*((3*cos(`&theta;`))/2 - (5*cos(`&theta;`)^3)/2))/(2*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 3, 1) = (7^(1/2)*48^(1/2)*exp(`&phi;`*I)*(6*sin(`&theta;`) - (15*sin(`&theta;`)^3)/2))/(48*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 3, 2) = (7^(1/2)*480^(1/2)*exp(2*`&phi;`*I)*(15*cos(`&theta;`) - 15*cos(`&theta;`)^3))/(480*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 3, 3) = (7^(1/2)*2880^(1/2)*exp(3*`&phi;`*I)*sin(`&theta;`)^3)/(192*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, -4) = (17920^(1/2)*exp(-4*`&phi;`*I)*(105*cos(`&theta;`)^4 + 210*sin(`&theta;`)^2 - 105))/(17920*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, -3) = -(3*2240^(1/2)*exp(-3*`&phi;`*I)*cos(`&theta;`)*sin(`&theta;`)^3)/(64*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, -2) = -(160^(1/2)*exp(-2*`&phi;`*I)*((105*cos(`&theta;`)^4)/2 + 60*sin(`&theta;`)^2 - 105/2))/(160*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, -1) = (3*80^(1/2)*exp(-`&phi;`*I)*((15*cos(`&theta;`)*sin(`&theta;`))/2 - (35*cos(`&theta;`)^3*sin(`&theta;`))/2))/(80*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, 0) = (3*((35*cos(`&theta;`)^4)/8 + (15*sin(`&theta;`)^2)/4 - 27/8))/(2*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, 1) = -(3*80^(1/2)*exp(`&phi;`*I)*((15*cos(`&theta;`)*sin(`&theta;`))/2 - (35*cos(`&theta;`)^3*sin(`&theta;`))/2))/(80*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, 2) = -(160^(1/2)*exp(2*`&phi;`*I)*((105*cos(`&theta;`)^4)/2 + 60*sin(`&theta;`)^2 - 105/2))/(160*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, 3) = (3*2240^(1/2)*exp(3*`&phi;`*I)*cos(`&theta;`)*sin(`&theta;`)^3)/(64*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 4, 4) = (17920^(1/2)*exp(4*`&phi;`*I)*(105*cos(`&theta;`)^4 + 210*sin(`&theta;`)^2 - 105))/(17920*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, -5) = -(11^(1/2)*14515200^(1/2)*exp(-5*`&phi;`*I)*sin(`&theta;`)^5)/(15360*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, -4) = (11^(1/2)*1451520^(1/2)*exp(-4*`&phi;`*I)*(945*cos(`&theta;`)^5 - 1890*cos(`&theta;`)^3 + 945*cos(`&theta;`)))/(1451520*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, -3) = -(11^(1/2)*80640^(1/2)*exp(-3*`&phi;`*I)*(420*sin(`&theta;`)^3 - (945*sin(`&theta;`)^5)/2))/(80640*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, -2) = -(11^(1/2)*3360^(1/2)*exp(-2*`&phi;`*I)*((315*cos(`&theta;`)^5)/2 - 210*cos(`&theta;`)^3 + (105*cos(`&theta;`))/2))/(3360*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, -1) = -(11^(1/2)*120^(1/2)*exp(-`&phi;`*I)*((315*cos(`&theta;`)^4*sin(`&theta;`))/8 + (105*sin(`&theta;`)^3)/4 - (195*sin(`&theta;`))/8))/(120*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, 0) = (11^(1/2)*((63*cos(`&theta;`)^5)/8 - (35*cos(`&theta;`)^3)/4 + (15*cos(`&theta;`))/8))/(2*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, 1) = (11^(1/2)*120^(1/2)*exp(`&phi;`*I)*((315*cos(`&theta;`)^4*sin(`&theta;`))/8 + (105*sin(`&theta;`)^3)/4 - (195*sin(`&theta;`))/8))/(120*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, 2) = -(11^(1/2)*3360^(1/2)*exp(2*`&phi;`*I)*((315*cos(`&theta;`)^5)/2 - 210*cos(`&theta;`)^3 + (105*cos(`&theta;`))/2))/(3360*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, 3) = (11^(1/2)*80640^(1/2)*exp(3*`&phi;`*I)*(420*sin(`&theta;`)^3 - (945*sin(`&theta;`)^5)/2))/(80640*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, 4) = (11^(1/2)*1451520^(1/2)*exp(4*`&phi;`*I)*(945*cos(`&theta;`)^5 - 1890*cos(`&theta;`)^3 + 945*cos(`&theta;`)))/(1451520*PI^(1/2))
MuPAD graphics
Ylm(`&theta;`, `&phi;`, 5, 5) = (11^(1/2)*14515200^(1/2)*exp(5*`&phi;`*I)*sin(`&theta;`)^5)/(15360*PI^(1/2))
MuPAD graphics