Re: SphericalHarmonics strange behavior
- To: mathgroup at smc.vnet.net
- Subject: [mg100990] Re: SphericalHarmonics strange behavior
- From: pfalloon <pfalloon at gmail.com>
- Date: Fri, 19 Jun 2009 20:47:13 -0400 (EDT)
- References: <h1en59$i5n$1@smc.vnet.net>
On Jun 19, 10:46 am, "lb... at seas.upenn.edu" <lb... at seas.upenn.edu> wrote: > Hi all, > > working with some spherical harmonics and have some questions about the code as implemented in mathematica. > > based onhttp://mathworld.wolfram.com/SphericalHarmonic.html > > I put together the following code to see what is implemented > > th1 = 1.324; > ph1 = 5.231; > > diffY[l_, m_, t_, p_] := > Module[{val1, val2}, val1 = SphericalHarmonicY[l, m, t, p]; > val2 = > Sqrt[((2*l + 1)*(l - m)!)/((4*Pi)*(l + m)!)]* > LegendreP[l, m, Cos[t]]*E^(I*m*p); > Print[{val1, val2, Abs[val1 - val2]}]; > Return[Abs[val1 - val2]]; ]; > > diffY[1, 1, th1, ph1] > > diffY[1, -1, th1, ph1] > > Clearly there is some sign error somewhere I was wondering if anyone had any suggestions. > > thanks > Luke I hate to jump to conclusions, but to me this looks suspiciously like a bug in the LegendreP function (which appears in the definition of SphericalHarmonicY). The suspicious behaviour can be reduced to the following: In[94]:= theta = 1.324; l = 1; m = -1; eps = 10^-6; LegendreP[l, m, Cos[theta]] (*direct computation*) LegendreP[l, m, Cos[t]] /. t -> theta (*evaluate symbolically then substitute numeric value*) $Version Out[95]= -0.48485 Out[96]= 0.48485 Out[97]= "7.0 for Microsoft Windows (32-bit) (February 18, 2009)" So it looks like direct evaluation may be incorrect. Even more suspiciously, if we try nearby non-integer l, they have the correct value: In[106]:= LegendreP[l + #, m, Cos[th1]] & /@ {-eps, 0, eps} Out[106]= {0.48485, -0.48485, 0.48485} So it seems something subtle and incorrect may be going on in the evaluation for integer l. Cheers, Peter.