Add sample images to the legendre help page 61/8761/2
Sylvestre Ledru [Tue, 21 Aug 2012 13:28:43 +0000 (15:28 +0200)]
Change-Id: I930f499b830a022df99564f0bed63468fe1c14e2

scilab/modules/special_functions/help/en_US/legendre.xml

index c84ce6c..8698c6b 100644 (file)
@@ -10,7 +10,7 @@
  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
  *
  -->
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:id="legendre" xml:lang="en">
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" version="5.0-subset Scilab" xml:id="legendre" xml:lang="en">
     <refnamediv>
         <refname>legendre</refname>
         <refpurpose>associated Legendre functions</refpurpose>
         <para>
             In any case, the format of <literal>y</literal> is :
         </para>
-        <programlisting role=""><![CDATA[ 
+        <programlisting role="no-scilab-exec"><![CDATA[ 
 max(length(n),length(m)) x length(x)
  ]]></programlisting>
         <para>and :</para>
-        <programlisting role=""><![CDATA[ 
+        <programlisting role="no-scilab-exec"><![CDATA[ 
 y(i,j) = P(n(i),m;x(j))   if n is a vector
 y(i,j) = P(n,m(i);x(j))   if m is a vector
 y(1,j) = P(n,m;x(j))      if both n and m are scalars
@@ -121,7 +121,7 @@ y(1,j) = P(n,m;x(j))      if both n and m are scalars
     </refsection>
     <refsection>
         <title>Examples</title>
-        <programlisting role="example"><![CDATA[ 
+        <programlisting role="example"><![CDATA[
 // example 1 : plot of the 6 first Legendre polynomials on (-1,1)
 l = nearfloat("pred",1);
 x = linspace(-l,l,200)';
@@ -129,7 +129,15 @@ y = legendre(0:5, 0,  x);
 clf()
 plot2d(x,y', leg="p0@p1@p2@p3@p4@p5@p6")
 xtitle("the 6 th first Legendre polynomials")
-
+ ]]></programlisting>
+        <scilab:image>
+l = nearfloat("pred",1);
+x = linspace(-l,l,200)';
+y = legendre(0:5, 0,  x);
+plot2d(x,y', leg="p0@p1@p2@p3@p4@p5@p6")
+xtitle("the 6 th first Legendre polynomials")
+        </scilab:image>
+        <programlisting role="example"><![CDATA[
 // example 2 : plot of the associated Legendre functions of degree 5 
 l = nearfloat("pred",1);
 x = linspace(-l,l,200)';
@@ -137,7 +145,15 @@ y = legendre(5, 0:5, x, "norm");
 clf()
 plot2d(x,y', leg="p5,0@p5,1@p5,2@p5,3@p5,4@p5,5")
 xtitle("the (normalised) associated Legendre functions of degree 5")
-
+ ]]></programlisting>
+        <scilab:image>
+l = nearfloat("pred",1);
+x = linspace(-l,l,200)';
+y = legendre(5, 0:5, x, "norm");
+plot2d(x,y', leg="p5,0@p5,1@p5,2@p5,3@p5,4@p5,5")
+xtitle("the (normalised) associated Legendre functions of degree 5")
+        </scilab:image>
+        <programlisting role="example"><![CDATA[
 // example 3 : define then plot a spherical harmonic
 // 3-1 : define the function Ylm
 function [y] = Y(l,m,theta,phi)
@@ -147,14 +163,14 @@ function [y] = Y(l,m,theta,phi)
      y = (-1)^m/(sqrt(2*%pi))*exp(%i*m*phi)*legendre(l, m, cos(theta), "norm")
   else
      y = 1/(sqrt(2*%pi))*exp(%i*m*phi)*legendre(l, -m, cos(theta), "norm")
-  end      
+  end
 endfunction
 
 // 3.2 : define another useful function
 function [x,y,z] = sph2cart(theta,phi,r)
   // theta row vector      1 x nt
   // phi   column vector  np x 1
-  // r     scalar or np x nt matrix (r(i,j) the length at phi(i) theta(j)) 
+  // r     scalar or np x nt matrix (r(i,j) the length at phi(i) theta(j))
   x = r.*(cos(phi)*sin(theta));
   y = r.*(sin(phi)*sin(theta));
   z = r.*(ones(phi)*cos(theta));
@@ -177,5 +193,38 @@ plot3d(xf2,yf2,zf2,flag=[2 4 4]); xtitle("|Real(Y31(theta,phi))|")
 subplot(1,3,3)
 plot3d(xf3,yf3,zf3,flag=[2 4 4]); xtitle("|Imag(Y31(theta,phi))|")
  ]]></programlisting>
+<!-- Commented. Too slow
+        <scilab:image>
+function [y] = Y(l,m,theta,phi)
+  if m >= 0 then
+     y = (-1)^m/(sqrt(2*%pi))*exp(%i*m*phi)*legendre(l, m, cos(theta), "norm")
+  else
+     y = 1/(sqrt(2*%pi))*exp(%i*m*phi)*legendre(l, -m, cos(theta), "norm")
+  end
+endfunction
+
+function [x,y,z] = sph2cart(theta,phi,r)
+  x = r.*(cos(phi)*sin(theta));
+  y = r.*(sin(phi)*sin(theta));
+  z = r.*(ones(phi)*cos(theta));
+endfunction
+
+l = 3; m = 1;
+theta = linspace(0.1,%pi-0.1,60);
+phi = linspace(0,2*%pi,120)';
+f = Y(l,m,theta,phi);
+[x1,y1,z1] = sph2cart(theta,phi,abs(f));       [xf1,yf1,zf1] = nf3d(x1,y1,z1);
+[x2,y2,z2] = sph2cart(theta,phi,abs(real(f))); [xf2,yf2,zf2] = nf3d(x2,y2,z2);
+[x3,y3,z3] = sph2cart(theta,phi,abs(imag(f))); [xf3,yf3,zf3] = nf3d(x3,y3,z3);
+
+clf()
+subplot(1,3,1)
+plot3d(xf1,yf1,zf1,flag=[2 4 4]); xtitle("|Y31(theta,phi)|")
+subplot(1,3,2)
+plot3d(xf2,yf2,zf2,flag=[2 4 4]); xtitle("|Real(Y31(theta,phi))|")
+subplot(1,3,3)
+plot3d(xf3,yf3,zf3,flag=[2 4 4]); xtitle("|Imag(Y31(theta,phi))|")
+        </scilab:image>
+-->
     </refsection>
 </refentry>