量子力学Ⅰ/球面調和関数/メモ のバックアップ差分(No.7)

更新


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#mathjax

* 形状 [#la277f49]

位相を色分けする
 LANG:mathematica
 With[{lmax=5},
   Table[
     If[Abs[m]<=l,
       SphericalPlot3D[Abs[
           SphericalHarmonicY[l, m, t, p] 2
         ], {t, 0, Pi}, {p, 0, 2 Pi}, 
         PlotRange -> {{-1, 1}, {-1, 1}, {-1.5, 1.5}},
         BoxRatios->{1,1,1.5}, PlotPoints->30,
         Axes->False, Boxed->False, Mesh->False,
         ColorFunctionScaling -> False, 
         ColorFunction -> Function[{x,y,z,t,p,r},
           Blend[{Blue,Yellow},
             (Cos[Arg[SphericalHarmonicY[l, m, t, p]]]+1)/2]]
       ],
       Null
     ],
     {l, 0, lmax},
     {m, 0, lmax}
   ]
 ]//GraphicsGrid[#,AspectRatio->1.5]&

実数版
 LANG:mathematica
 With[{
     lmax=5,
     F := Function[{l,m,t,p}, 
            If[ 
              m==0,
              SphericalHarmonicY[l, 0, t, p],
              SphericalHarmonicY[l, Abs[m], t, p]/Sqrt[2] + 
                If[m<0,-1,1] (-1)^m SphericalHarmonicY[l, -Abs[m], t, p]/Sqrt[2]
            ] If[m<0,-I,1]]
   },
   Table[
     If[Abs[m]<=l,
       SphericalPlot3D[2 Abs[F[l,m,t,p]], {t, 0, Pi}, {p, 0, 2 Pi}, 
         PlotRange -> {{-1.2, 1.2}, {-1.2, 1.2}, {-1.8, 1.8}},
         BoxRatios->{1,1,1.5}, PlotPoints->30,
         Axes->False, Boxed->False, Mesh->False,
         ColorFunctionScaling -> False, 
         ColorFunction -> Function[{x,y,z,t,p,r},
           Blend[{Blue,Yellow},
             (Cos[Arg[F[l, m, t, p]]]+1)/2]]
       ] // Evaluate,
       Null
     ],
     {l, 0, lmax},
     {m, -lmax, lmax}
   ]
 ] // GraphicsGrid[#, AspectRatio->1.5] &

符号の反転する理由

 LANG:mathematica
 Plot[Sin[x], {x, -3 Pi, 3 Pi}, PlotLegends -> "Expressions", PlotPoints->500,ColorFunctionScaling->False, ColorFunction->Function[{x,y},If[y>0,Blue//Darker,Red//Lighter]],ImageSize->Large,AspectRatio->0.3,PlotStyle->Thick,Filling->Axis]
 Plot[Abs[Sin[x]], {x, -3 Pi, 3 Pi}, PlotLegends -> "Expressions", PlotPoints->500,ColorFunctionScaling->False, ColorFunction->Function[{x,y},If[Sin[x]>0,Blue//Darker,Red//Lighter]],ImageSize->Large,AspectRatio->0.15,PlotStyle->Thick,Filling->Axis]
 

* 解答:$m$ に関する漸化式 [#k309d54e]

(1)

漸化式にそれぞれ &math(m=l,\,m=-l); を代入すると、

 &math(
\hat l_+\,Y_l{}^{l}(\theta,\phi)=\hbar&\sqrt{(l-l)(l+l+1)}\,Y_l{}^{l+1}(\theta,\phi)=0\\[-5mm]
&\hspace{3mm}\underbrace{\hspace{11mm}}_{=\,0}
);

 &math(
\hat l_-\,Y_l{}^{-l}(\theta,\phi)=\hbar&\sqrt{(l-l)(l+l+1)}\,Y_l{}^{-l-1}(\theta,\phi)=0\\[-5mm]
&\hspace{3mm}\underbrace{\hspace{11mm}}_{=\,0}
);

となって、&math(Y_l{}^{l+1}(\theta,\phi)); や &math(Y_l{}^{-l-1}(\theta,\phi)); 
が得られることはない。

(2)

 &math(
&\hat l_-\hat l_+Y_l{}^{m}(\theta,\phi)=\hat l_-\hbar\sqrt{(l-m)(l+m+1)}Y_l{}^{m+1}
=\hbar^2(l+m+1)(l-m)Y_l{}^m\\
&\hat l_+\hat l_-Y_l{}^{m}(\theta,\phi)=\hat l_+\hbar\sqrt{(l+m)(l-m+1)}Y_l{}^{m-1}
=\hbar^2(l+m)(l-m+1)Y_l{}^{m}\\
);

(3)

&math(\hat l_x\hat l_y\ne \hat l_y\hat l_x); に注意しつつ、

 &math(
&\frac{1}{2}\left( \hat l_+\hat l_-+\hat l_-\hat l_+\right)\\
&=\frac{1}{2}\left\{ (\hat l_x+i\hat l_y)(\hat l_x-i\hat l_y)+(\hat l_x-i\hat l_y)(\hat l_x+i\hat l_y)\right\}\\
&=\frac{1}{2}\left( \hat l_x^2+\cancel{i\hat l_y\hat l_x}-\cancel{i\hat l_x\hat l_y}+\hat l_y^2+
\hat l_x^2-\cancel{i\hat l_y\hat l_x}+\cancel{i\hat l_x\hat l_y}+\hat l_y^2\right)\\
&=\hat l_x^2+\hat l_y^2
);

(4)

 &math(
\big(\hat l_x^2+\hat l_y^2\big)Y_l{}^m
&=\frac{\hbar^2}{2}\big\{(l+m+1)(l-m)+(l+m)(l-m+1)\big\}Y_l{}^m\\
&=\hbar^2(l^2-m^2+l)Y_l{}^m\\
);


** 解説 [#t5af95ff]

 LANG:igor
 function draw(l)
  variable l
 
 	wave wave0, wave1
 	make/O/N=1001 wave0,wave1
 	setscale/p x,-sqrt(l*(l+1)),sqrt(l*(l+1))/500,wave0,wave1
 	wave0=sqrt(l*(l+1)-x^2+1e-12)
 	wave1=-sqrt(l*(l+1)-x^2+1e-12)
 
 	make/O/N=(2*l+1) wave2
 	setscale/p x,-l,1,wave2
 	wave2=sqrt(l*(l+1)-x^2)
	
 	variable i
 	SetDrawLayer /K UserBack
 	for(i=0;i<2*l+1;i+=1)
 		SetDrawLayer UserBack
 		SetDrawEnv xcoord= bottom,ycoord= left;
 		SetDrawEnv linethick= 1.50
 		DrawLine 0,0,wave2[i],pnt2x(wave2,i)
 
 		SetDrawLayer UserBack
 		SetDrawEnv xcoord= bottom,ycoord= left;
 		SetDrawEnv linethick= 0.50
 		DrawLine 0,pnt2x(wave2,i),wave2[i],pnt2x(wave2,i)
 	endfor
 end


Counter: 2453 (from 2010/06/03), today: 1, yesterday: 4