Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

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.


  • Prev by Date: Integrate[], Sort[] and Hold[]
  • Next by Date: Re: Plotting surface with thickness
  • Previous by thread: Re: SphericalHarmonics strange behavior
  • Next by thread: Re: SphericalHarmonics strange behavior