Application Center - Maplesoft

App Preview:

Classroom Tips and Techniques: Eigenvalue Problems for ODEs - Part 3

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

Image 

 

Classroom Tips and Techniques:  

Eigenvalue Problems for ODEs - Part 3 

 

Robert J. Lopez
Emeritus Professor of Mathematics and Maple Fellow
Maplesoft
 

Initializations 

 

> Typesetting:-mrow(Typesetting:-mi(
 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Introduction 

 

In Part 1 of this series of articles on solving eigenvalue problems for ODEs, we discussed equations for which the general solution readily yielded eigenvalues and eigenfunctions without the need for detailed knowledge of any of the special functions of applied mathematics.  In Part 2 of this series, we examined the solution of Laplace's equation in a cylinder.  Separation of variables in cylindrical coordinates leads to a singular Sturm-Liouville eigenvalue problem whose differential equation is the Bessel equation. 

 

In Part 3 of this series, we will examine the solution of Laplace's equation in a sphere.  Separation of variables in spherical coordinates leads to a singular Sturm-Liouville eigenvalue problem in which the differential equation is Legendre's equation.  Reasoning from a general solution of Legendre's equation to the bounded solutions needed to solve the eigenvalue problem is a significantly greater challenge than it was for the parallel case of Bessel's equation.  Our discussion will highlight the contributions Maple can make to this process. 

 

Steady-State Temperatures in a Sphere 

 

At steady state, the temperature Typesetting:-mrow(Typesetting:-mi( in a sphere satisfies Laplace's equationTypesetting:-mrow(Typesetting:-mo( and some conditions on the boundary of the sphere, which we describe in spherical coordinates by Typesetting:-mrow(Typesetting:-mn(  In addition to the conditions prescribed on the surface Typesetting:-mrow(Typesetting:-mi(the physical properties of the system demand the solution be continuous.  This requirement will be the most important, and most difficult condition to impose. 

 

If the temperature on the surface of the sphere is prescribed, we say that a Dirichlet condition has been imposed.  If the prescribed temperature on the surface is Typesetting:-mrow(Typesetting:-mi(a function of Typesetting:-mrow(Typesetting:-mi( alone, the temperature in the sphere will exhibit azimuthal symmetry so that Typesetting:-mrow(Typesetting:-mi(  Alternatively, if this prescribed temperature is Typesetting:-mrow(Typesetting:-mi(then the temperature in the sphere will exhibit azimuthal asymmetry so that Typesetting:-mrow(Typesetting:-mi( 

 

If the surface of the sphere is insulated so the net heat flux across this surface is zero, we say that a homogeneous Neumann condition has been imposed.  The flux across the surface is the normal derivative given by Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( evaluated at Typesetting:-mrow(Typesetting:-mi(where Typesetting:-mrow(Typesetting:-mi( is the radius of the sphere.  The net flux would be the surface integral of this derivative.  However, if the net heat flux across the surface of a homogeneous sphere is zero, the steady-state temperature in the sphere will be constant. 

 

Spherical Coordinates in Maple 

 

From our statement of the problem above, our definition of spherical coordinates can be inferred.  However, because there are two different usages prevalent in the literature, we will explicitly define our system according to the notation in most mathematics texts.  In such texts, Typesetting:-mrow(Typesetting:-mi( is the distance from the origin; Typesetting:-mrow(Typesetting:-mi(measured from the positive Typesetting:-mrow(Typesetting:-mi(-axis and around the Typesetting:-mrow(Typesetting:-mi(-axis, lies in the range Typesetting:-mrow(Typesetting:-mn(; and Typesetting:-mrow(Typesetting:-mi(measured downward from the positive Typesetting:-mrow(Typesetting:-mi(-axis, lies in the range Typesetting:-mrow(Typesetting:-mn(  The equations connecting these spherical coordinates with Cartesian coordinates appear on the left in Table 1. 

 

Spherical coordinates in texts for physics, engineering, and the applied sciences tend to interchange the names Typesetting:-mrow(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-mi(  The equations connecting these spherical coordinates with Cartesian coordinates appear on the right in Table 1. 

 

 

Math Texts 

 

Angle Typesetting:-mrow(Typesetting:-mi( measured down from Typesetting:-mrow(Typesetting:-mi(-axis 

Science Texts 

 

Angle Typesetting:-mrow(Typesetting:-mi( measured down from Typesetting:-mrow(Typesetting:-mi(-axis 

Typesetting:-mrow(Typesetting:-mi( 

Typesetting:-mrow(Typesetting:-mi( 

Typesetting:-mrow(Typesetting:-mi( 

Typesetting:-mrow(Typesetting:-mi( 

Typesetting:-mrow(Typesetting:-mi( 

Typesetting:-mrow(Typesetting:-mi( 

Table 1   Spherical coordinates as defined in math texts (left) and science texts (right) 

 

Finally, note that in Maple's VectorCalculus package, commands that use spherical coordinates assume that the "middle" coordinate in the triple Typesetting:-mrow(Typesetting:-mi( is the angle measured down from the Typesetting:-mrow(Typesetting:-mi(-axis.  Unfortunately, in a number of plot commands in the plots package, this convention is not respected.  Maple is currently struggling with this quandary, especially so, given its commitment to backward compatibility. 

 

We set the ambient coordinate system via the command 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Laplace's Equation in Spherical Coordinates 

 

In a sphere, the steady-state temperature Typesetting:-mrow(Typesetting:-mi( satisfied Laplace's equation Typesetting:-mrow(Typesetting:-msup(Typesetting:-mo(  This equation is given in Maple as 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(LE, `+`(`/`(`*`(2, `*`(diff(u(rho, `ϕ`, theta), rho))), `*`(rho)), diff(u(rho, `ϕ`, theta), `$`(rho, 2)), `/`(`*`(cos(`ϕ`), `*`(diff(u(rho, `&varphi...
 

Maple can determine if the partial differential equation is variable separable: 

 

> Typesetting:-mrow(Typesetting:-mi(
 

0
 

The return of "0" indicates that the equation is indeed separable because the separability conditions are identically satisfied. 

 

Azimuthal Symmetry 

Separation of Variables 

 

Under the assumption that the steady-state temperatures Typesetting:-mrow(Typesetting:-mi( are symmetric about the Typesetting:-mrow(Typesetting:-mi(-axis, dependence on angle Typesetting:-mrow(Typesetting:-mi( can be dispensed with.  Hence, Typesetting:-mrow(Typesetting:-mi(and a Maple-generated variable-separation is obtained with 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`&where`(u(rho, `ϕ`) = `*`(_F1(rho), `*`(_F2(`ϕ`))), [{diff(_F1(rho), `$`(rho, 2)) = `+`(`/`(`*`(_F1(rho), `*`(_c[1])), `*`(`^`(rho, 2))), `-`(`/`(`*`(2, `*`(di... (6.1.1)
 

Equation Typesetting:-mrow(Typesetting:-mi(<$/-I%diffGF$6$-F96$F..." align="center" border="0"> shows that a variable separation solution of the form 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(U, `*`(Rho(rho), `*`(Phi(`&varphi;`))))], [`*`(Rho(rho), `*`(Phi(`&varphi;`)))])
 

exists, and provides the ordinary differential equations the functions Typesetting:-mrow(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-mi( must satisfy.  We now proceed to obtain these same results from first principles. 

 

 

Under the separation assumption, Laplace's equation assumes the simpler form 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[1], `+`(`/`(`*`(2, `*`(rho, `*`(diff(Rho(rho), rho)))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(diff(Rho(rho), `$`(rho, 2)))), `*`(Rho(rho))), `/`(`*`(cos(`&varphi;`)...
 

Moving all terms in Typesetting:-mrow(Typesetting:-mi( to the right, we then have 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[2], `+`(`/`(`*`(2, `*`(rho, `*`(diff(Rho(rho), rho)))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(diff(Rho(rho), `$`(rho, 2)))), `*`(Rho(rho)))) = `+`(`-`(`/`(`*`(cos(`...
 

Introduction of Bernoulli's separation constant Typesetting:-mrow(Typesetting:-mi( then leads to the ordinary differential equations 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

 

 

Typesetting:-mprintslash([`:=`(q[3], `+`(`/`(`*`(2, `*`(rho, `*`(diff(Rho(rho), rho)))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(diff(Rho(rho), `$`(rho, 2)))), `*`(Rho(rho)))) = lambda)], [`+`(`/`(`*...
Typesetting:-mprintslash([`:=`(q[4], `+`(`-`(`/`(`*`(cos(`&varphi;`), `*`(diff(Phi(`&varphi;`), `&varphi;`))), `*`(Phi(`&varphi;`), `*`(sin(`&varphi;`))))), `-`(`/`(`*`(diff(Phi(`&varphi;`), `$`(`&var...
 

We are primarily interested in the second of these equations - it will become Legendre's equation after a mild rearrangement and change of variables.  First, write the equation in the form 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[5], 0 = `+`(lambda, `/`(`*`(cos(`&varphi;`), `*`(diff(Phi(`&varphi;`), `&varphi;`))), `*`(Phi(`&varphi;`), `*`(sin(`&varphi;`)))), `/`(`*`(diff(Phi(`&varphi;`), `$`(`&...
 

and then 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[6], 0 = `+`(`*`(Phi(`&varphi;`), `*`(sin(`&varphi;`), `*`(lambda))), `*`(cos(`&varphi;`), `*`(diff(Phi(`&varphi;`), `&varphi;`))), `*`(sin(`&varphi;`), `*`(diff(Phi(`&...
 

Now, make the change of variables Typesetting:-mrow(Typesetting:-mi(with Typesetting:-mrow(Typesetting:-mi( becoming Typesetting:-mrow(Typesetting:-mi(  This is done in Maple with 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[7], 0 = `/`(`*`(`+`(`*`(y(x), `*`(lambda)), `-`(`*`(y(x), `*`(lambda, `*`(`^`(x, 2))))), `-`(`*`(2, `*`(diff(y(x), x), `*`(x)))), `*`(2, `*`(`^`(x, 3), `*`(diff(y(x), ...
 

Further simplifying, we have 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[8], 0 = `+`(`*`(`+`(1, `-`(`*`(`^`(x, 2)))), `*`(diff(y(x), `$`(x, 2)))), `-`(`*`(2, `*`(diff(y(x), x), `*`(x)))), `*`(y(x), `*`(lambda))))], [0 = `+`(`*`(`+`(1, `-`(`...
 

which is the standard form of Legendre's equation, the self-adjoint form of which would be 

 

Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mn(  

 

The Sturm-Liouville Eigenvalue Problem 

 

The eigenvalue problem that embeds Legendre's equation is singular.  The boundary conditions are simply that Typesetting:-mrow(Typesetting:-mi( must be continuous on the interval Typesetting:-mrow(Typesetting:-mo(  Passage from the general solution 

 

> Typesetting:-mrow(Typesetting:-mi(
 

y(x) = `+`(`*`(_C1, `*`(LegendreP(`+`(`*`(`/`(1, 2), `*`(`^`(`+`(`*`(4, `*`(lambda)), 1), `/`(1, 2)))), `-`(`/`(1, 2))), x))), `*`(_C2, `*`(LegendreQ(`+`(`*`(`/`(1, 2), `*`(`^`(`+`(`*`(4, `*`(lambda))...
 

to the eigenfunctions is surprisingly more difficult than it was for Bessel's equation.  Because we are in extended typesetting mode, the functions Typesetting:-mrow(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-mi( are displayed as Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(respectively.  (Were we in extended typesetting mode during our earlier discussion of Bessel's equation, Maple would have displayed Typesetting:-mrow(Typesetting:-mi( as Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(

 

When solving Laplace's equation in the cylinder, it was relatively easy to use continuity to restrict the general solution to just Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(, the Bessel function bounded on the interval Typesetting:-mrow(Typesetting:-mn(and to determine the eigenvalues Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( from the zeros of Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(  We began the process by ruling out the Bessel function of the second kind because we could tell from a graph that all such functions were unbounded at the origin. 

 

We will try to rule out the function Typesetting:-mrow(Typesetting:-mi( in a similar way, but we will find the process more difficult than it was for the Bessel function.  For example, consider 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(`-`(`*`(`/`(1, 4), `*`(ln(`+`(x, 1))))), `*`(`/`(1, 4), `*`(ln(`+`(`-`(1), x)))), `*`(`/`(3, 4), `*`(`^`(x, 2), `*`(ln(`+`(x, 1))))), `-`(`*`(`/`(3, 4), `*`(`^`(x, 2), `*`(ln(`+`(`-`(1), x)))))), ...
 

from which it is clear that the function is unbounded at the endpoints Typesetting:-mrow(Typesetting:-mi( because of the logarithms.  But this is obvious for Typesetting:-mrow(Typesetting:-mi(, an integer.  It is a bit more difficult to divine the endpoint behavior for general values of Typesetting:-mrow(Typesetting:-mi(.  For example, we can calculate the values 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

 

 

`+`(Float(infinity), `*`(Float(infinity), `*`(I)))
`+`(Float(infinity), `*`(Float(infinity), `*`(I)))
 

which suggest Typesetting:-mrow(Typesetting:-mi( may indeed be unbounded at Typesetting:-mrow(Typesetting:-mi( for general values of Typesetting:-mrow(Typesetting:-mi(.  Figure 1 contains graphs of the real and imaginary parts of Typesetting:-mrow(Typesetting:-mi(with Typesetting:-mrow(Typesetting:-mi( in the open interval Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mo( and Typesetting:-mrow(Typesetting:-mi( in the interval Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mn(

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Plot  
 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Plot  
 

Figure 1   Real and imaginary parts of Typesetting:-mrow(Typesetting:-mi( for Typesetting:-mrow(Typesetting:-mo(suggesting Typesetting:-mrow(Typesetting:-mi( is unbounded on Typesetting:-mrow(Typesetting:-mo( 

 

From Figure 1(a) especially, we conclude that Typesetting:-mrow(Typesetting:-mi( is unbounded for general values of Typesetting:-mrow(Typesetting:-mi(.  On the basis of this conclusion, we set Typesetting:-mrow(Typesetting:-mi( to zero in the general solution of Legendre's equation, and turn our attention to Typesetting:-mrow(Typesetting:-mi(the Legendre function of the first kind. 

 

We first show that for general (real) values of Typesetting:-mrow(Typesetting:-mi(Typesetting:-mrow(Typesetting:-mi( is unbounded.  Sample calculations include 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(Float(infinity), `*`(Float(infinity), `*`(I)))
 

To illustrate this behavior for multiple values of Typesetting:-mrow(Typesetting:-mi(, we define the following piecewise function. 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(f, PIECEWISE([2, `<`(1000, abs(LegendreP(a, -1)))], [LegendreP(a, -1), otherwise]))], [piecewise(`<`(1000, abs(LegendreP(a, -1))), 2, LegendreP(a, -1))])
 

If Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi( is large, then a graph of Typesetting:-mrow(Typesetting:-mi( will show a point at Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi( for that value of Typesetting:-mrow(Typesetting:-mi(.  If Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi( is "not large" then a graph of Typesetting:-mrow(Typesetting:-mi( will  show the value of Typesetting:-mrow(Typesetting:-mi(   

 

We can control the evaluation points for a graph of Typesetting:-mrow(Typesetting:-mi( if we define the uniform random variable Typesetting:-mrow(Typesetting:-mi( via 

 

> Typesetting:-mrow(Typesetting:-mi(
 

then create a uniform but random sample of Typesetting:-mrow(Typesetting:-mi(-values that includes the integers in the interval Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mo(

 

> Typesetting:-mrow(Typesetting:-mi(
 

The graph of Typesetting:-mrow(Typesetting:-mi( in Figure 2 shows that virtually all evaluations of Typesetting:-mrow(Typesetting:-mi( are large in magnitude.   

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Plot_2d  
 

Figure 2   Stylized graph of Typesetting:-mrow(Typesetting:-mi( for Typesetting:-mrow(Typesetting:-mo( 

However, it also suggests that Typesetting:-mrow(Typesetting:-mi( for integer Typesetting:-mrow(Typesetting:-mi(.  For noninteger Typesetting:-mrow(Typesetting:-mi(, Typesetting:-mrow(Typesetting:-mi( is unbounded so that the bounded solutions of Legendre's equation  

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([0 = `+`(`*`(`+`(1, `-`(`*`(`^`(x, 2)))), `*`(diff(y(x), `$`(x, 2)))), `-`(`*`(2, `*`(diff(y(x), x), `*`(x)))), `*`(y(x), `*`(lambda)))], [0 = `+`(`*`(`+`(1, `-`(`*`(`^`(x, 2)...
 

will be the eigenfunctions Typesetting:-mrow(Typesetting:-mi( with  

 

> Typesetting:-mrow(Typesetting:-mi(
 

k = `+`(`*`(`/`(1, 2), `*`(`^`(`+`(`*`(4, `*`(lambda)), 1), `/`(1, 2)))), `-`(`/`(1, 2))) (6.2.1)
 

an integer.  Hence, the eigenvalues will be 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(`*`(`^`(k, 2)), k)
 

that is, Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( The first few eigenfunctions are 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

 

 

 

 

 

 

 

 

 

 

Typesetting:-mprintslash([`:=`(P0, 1)], [1])
Typesetting:-mprintslash([`:=`(P1, x)], [x])
Typesetting:-mprintslash([`:=`(P2, `+`(`-`(`/`(1, 2)), `*`(`/`(3, 2), `*`(`^`(x, 2)))))], [`+`(`-`(`/`(1, 2)), `*`(`/`(3, 2), `*`(`^`(x, 2))))])
Typesetting:-mprintslash([`:=`(P3, `+`(`*`(`/`(5, 2), `*`(`^`(x, 3))), `-`(`*`(`/`(3, 2), `*`(x)))))], [`+`(`*`(`/`(5, 2), `*`(`^`(x, 3))), `-`(`*`(`/`(3, 2), `*`(x))))])
Typesetting:-mprintslash([`:=`(P4, `+`(`/`(3, 8), `*`(`/`(35, 8), `*`(`^`(x, 4))), `-`(`*`(`/`(15, 4), `*`(`^`(x, 2))))))], [`+`(`/`(3, 8), `*`(`/`(35, 8), `*`(`^`(x, 4))), `-`(`*`(`/`(15, 4), `*`(`^`...
Typesetting:-mprintslash([`:=`(P5, `+`(`*`(`/`(63, 8), `*`(`^`(x, 5))), `-`(`*`(`/`(35, 4), `*`(`^`(x, 3)))), `*`(`/`(15, 8), `*`(x))))], [`+`(`*`(`/`(63, 8), `*`(`^`(x, 5))), `-`(`*`(`/`(35, 4), `*`(...
 

which are the Legendre polynomials Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(normalized so that Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(  These polynomials are graphed in Figure 3. 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Plot_2d  
 

Figure 3   The Legendre polynomials Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( 

That the function Typesetting:-mrow(Typesetting:-mi( reduces to the polynomial Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( for Typesetting:-mrow(Typesetting:-mi(can be seen from the following calculations.   

 

For noninteger Typesetting:-mrow(Typesetting:-mi(, we first obtain the formal power series expansion of Typesetting:-mrow(Typesetting:-mi( via 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(F, `+`(Sum(`+`(`/`(`*`(2, `*`(`^`(Pi, `/`(1, 2)), `*`(pochhammer(`+`(`-`(`*`(`/`(1, 2), `*`(a)))), k), `*`(pochhammer(`+`(`*`(`/`(1, 2), `*`(a)), `/`(1, 2)), k), `*`(`^`...
 

then extract the general term in the first series with 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[9], `+`(`/`(`*`(2, `*`(`^`(Pi, `/`(1, 2)), `*`(pochhammer(`+`(`-`(`*`(`/`(1, 2), `*`(a)))), k), `*`(pochhammer(`+`(`*`(`/`(1, 2), `*`(a)), `/`(1, 2)), k), `*`(`^`(4, k...
 

The pochhammer symbol 

 

Typesetting:-mrow(Typesetting:-msub(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi(  

 

or "rising factorial" for Typesetting:-mrow(Typesetting:-mi( complex generalizes to  

 

Typesetting:-mrow(Typesetting:-mi(  

 

for complex Typesetting:-mrow(Typesetting:-mi(  If Typesetting:-mrow(Typesetting:-mi( is a nonpositive integer, then 

 

Typesetting:-mrow(Typesetting:-mi(  

 

Making this transformation and setting Typesetting:-mrow(Typesetting:-mi( in the general term of the first series for Typesetting:-mrow(Typesetting:-mi( gives the general coefficient 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[10], `+`(`/`(`*`(2, `*`(`^`(Pi, `/`(1, 2)), `*`(GAMMA(`+`(`-`(`*`(`/`(1, 2), `*`(a))), k)), `*`(GAMMA(`+`(`*`(`/`(1, 2), `*`(a)), `/`(1, 2), k)), `*`(`^`(4, k)))))), `...
 

For large Typesetting:-mrow(Typesetting:-mi( this coefficient is asymptotic to 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

`+`(`-`(`/`(`*`(`/`(1, 2), `*`(sin(`*`(Pi, `*`(a))))), `*`(k, `*`(Pi)))))
 

suggesting that Typesetting:-mrow(Typesetting:-mi( is unbounded since the series under consideration will behave like the harmonic series at Typesetting:-mrow(Typesetting:-mi(.  We can confirm this behavior by comparing the general coefficient with Typesetting:-mrow(Typesetting:-mfrac(Typesetting:-mn( for large Typesetting:-mrow(Typesetting:-mi(.  In the limit we find the ratio tends to 

 

> Typesetting:-mrow(Typesetting:-munder(Typesetting:-mo(
 

`+`(`/`(`*`(2, `*`(Pi)), `*`(GAMMA(`+`(`/`(1, 2), `-`(`*`(`/`(1, 2), `*`(a))))), `*`(GAMMA(`+`(`*`(`/`(1, 2), `*`(a)))), `*`(a, `*`(GAMMA(`+`(`-`(`*`(`/`(1, 2), `*`(a))))), `*`(GAMMA(`+`(`*`(`/`(1, 2)...
 

which is finite for Typesetting:-mrow(Typesetting:-mi( not an integer.  To see that for integer Typesetting:-mrow(Typesetting:-mi( the series for Typesetting:-mrow(Typesetting:-mi( reduces to a polynomial, examine the recursion formula for its coefficients.  This is most efficiently obtained in Maple via 

 

> Typesetting:-mrow(Typesetting:-mi(
 

u(`+`(k, 2)) = `/`(`*`(`+`(`-`(lambda), k, `*`(`^`(k, 2))), `*`(u(k))), `*`(`+`(k, 1), `*`(`+`(k, 2))))
 

from which it becomes clear that Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( when  Typesetting:-mrow(Typesetting:-mi(  Hence, Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(  Therefore, Typesetting:-mrow(Typesetting:-mi( is a polynomial of degree Typesetting:-mrow(Typesetting:-mi( for . 

Typesetting:-mrow(Typesetting:-mi(   

 

Orthogonality of the Eigenfunctions  

 

The classical proof of the orthogonality of the eigenfunctions of Legendre's equation is based on integration by parts.  The self-adjoint form of the equation, namely, 

 

Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mn(  

 

is written once for an eigenfunction Typesetting:-mrow(Typesetting:-mi( and once for Typesetting:-mrow(Typesetting:-mi(  The first equation is multiplied by Typesetting:-mrow(Typesetting:-mi(and the second, by Typesetting:-mrow(Typesetting:-mi(, and the difference of the two products is integrated over Typesetting:-mrow(Typesetting:-mo(.  Integration by parts is applied to the terms containing the derivatives, which then vanish as we can see from the following sketch.  Integrals of the terms containing the derivatives can be written as 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

 

 

Typesetting:-mprintslash([`:=`(q[11], Int(`*`(u(x), `*`(Diff(`*`(`+`(1, `-`(`*`(`^`(x, 2)))), `*`(diff(v(x), x))), x))), x = -1 .. 1))], [Int(`*`(u(x), `*`(Diff(`*`(`+`(1, `-`(`*`(`^`(x, 2)))), `*`(di...
Typesetting:-mprintslash([`:=`(q[12], Int(`*`(v(x), `*`(Diff(`*`(`+`(1, `-`(`*`(`^`(x, 2)))), `*`(diff(u(x), x))), x))), x = -1 .. 1))], [Int(`*`(v(x), `*`(Diff(`*`(`+`(1, `-`(`*`(`^`(x, 2)))), `*`(di...
 

Integration by parts and subtraction then lead to 

 

> Typesetting:-mrow(Typesetting:-mi(
 

0
 

What remains is Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(  If the eigenvalues Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( are different, then Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mo(which implies orthogonality of Typesetting:-mrow(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-mi(

 

Thus, Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mo( for Typesetting:-mrow(Typesetting:-mi(as we see for Typesetting:-mrow(Typesetting:-mn( via the matrix of evaluations below. 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([Matrix([[2, 0, 0, 0, 0, 0], [0, `/`(2, 3), 0, 0, 0, 0], [0, 0, `/`(2, 5), 0, 0, 0], [0, 0, 0, `/`(2, 7), 0, 0], [0, 0, 0, 0, `/`(2, 9), 0], [0, 0, 0, 0, 0, `/`(2, 11)]])], [M...
 

From this matrix we also infer that Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mo(, a result Maple cannot show in general, as we see from  

 

> Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mo(
 

int(`*`(`^`(LegendreP(k, x), 2)), x = -1 .. 1)
 

Fourier-Legendre Series 

 

An integrable function Typesetting:-mrow(Typesetting:-mi(can be represented by the Fourier-Legendre series Typesetting:-mrow(Typesetting:-munderover(Typesetting:-mo(where 

 

Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(  

 

The coefficients Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(for the Fourier-Legendre series of the function 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(f, `*`(`^`(`+`(1, `-`(`*`(`^`(x, 2)))), `/`(1, 2))))], [`*`(`^`(`+`(1, `-`(`*`(`^`(x, 2)))), `/`(1, 2)))])
 

are  

 

> Typesetting:-mrow(Typesetting:-mo(
 

 

 

 

 

 

 

 

 

 

 

Typesetting:-mprintslash([`:=`(a[0], `+`(`*`(`/`(1, 4), `*`(Pi))))], [`+`(`*`(`/`(1, 4), `*`(Pi)))])
Typesetting:-mprintslash([`:=`(a[1], 0)], [0])
Typesetting:-mprintslash([`:=`(a[2], `+`(`-`(`*`(`/`(5, 32), `*`(Pi)))))], [`+`(`-`(`*`(`/`(5, 32), `*`(Pi))))])
Typesetting:-mprintslash([`:=`(a[3], 0)], [0])
Typesetting:-mprintslash([`:=`(a[4], `+`(`-`(`*`(`/`(9, 256), `*`(Pi)))))], [`+`(`-`(`*`(`/`(9, 256), `*`(Pi))))])
Typesetting:-mprintslash([`:=`(a[5], 0)], [0])
 

A partial sum of the Fourier-Legendre series itself is given by 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(FLf, `+`(`*`(`/`(1, 4), `*`(Pi)), `-`(`*`(`/`(5, 32), `*`(Pi, `*`(LegendreP(2, x))))), `-`(`*`(`/`(9, 256), `*`(Pi, `*`(LegendreP(4, x)))))))], [`+`(`*`(`/`(1, 4), `*`(P...
 

or better still, by 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(`*`(`/`(645, 2048), `*`(Pi)), `-`(`*`(`/`(105, 1024), `*`(Pi, `*`(`^`(x, 2))))), `-`(`*`(`/`(315, 2048), `*`(Pi, `*`(`^`(x, 4))))))
 

Figure 4 compares graphs of Typesetting:-mrow(Typesetting:-mi( and the partial sum of its Fourier-Legendre series. 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Plot_2d  
 

Figure 4   Graphs of Typesetting:-mrow(Typesetting:-mi( (in black) and a partial sum of its Fourier-Legendre series (in red) 

An integrable function Typesetting:-mrow(Typesetting:-mi(can be represented by the Fourier-Legendre series Typesetting:-mrow(Typesetting:-munderover(Typesetting:-mo(where 

 

Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(  

 

The function Typesetting:-mrow(Typesetting:-mi( has for its Fourier-Legendre coefficients the numbers 

 

> Typesetting:-mrow(Typesetting:-mo(
 

 

 

 

 

 

 

 

 

 

 

Typesetting:-mprintslash([`:=`(b[0], `+`(`*`(`/`(1, 4), `*`(Pi))))], [`+`(`*`(`/`(1, 4), `*`(Pi)))])
Typesetting:-mprintslash([`:=`(b[1], 0)], [0])
Typesetting:-mprintslash([`:=`(b[2], `+`(`-`(`*`(`/`(5, 32), `*`(Pi)))))], [`+`(`-`(`*`(`/`(5, 32), `*`(Pi))))])
Typesetting:-mprintslash([`:=`(b[3], 0)], [0])
Typesetting:-mprintslash([`:=`(b[4], `+`(`-`(`*`(`/`(9, 256), `*`(Pi)))))], [`+`(`-`(`*`(`/`(9, 256), `*`(Pi))))])
Typesetting:-mprintslash([`:=`(b[5], 0)], [0])
 

and for a partial sum of its Fourier-Legendre series, the polynomial 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(FLg, `+`(`-`(`*`(`/`(15, 2048), `*`(Pi, `*`(`+`(`-`(43), `*`(14, `*`(`^`(cos(`&varphi;`), 2))), `*`(21, `*`(`^`(cos(`&varphi;`), 4))))))))))], [`+`(`-`(`*`(`/`(15, 2048)...
 

Figure 5 compares graphs of Typesetting:-mrow(Typesetting:-mi( and the partial sum of its Fourier-Legendre series. 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Plot_2d  
 

Figure 5   Graphs of Typesetting:-mrow(Typesetting:-mi( (in black) and a partial sum of its Fourier-Legendre series (in red) 

Azimuthal Asymmetry 

Separation of Variables 

 

Without symmetry, Typesetting:-mrow(Typesetting:-mi(so the separated form of the solution of Laplace's equation would be 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(U, `*`(Rho(rho), `*`(Phi(`&varphi;`), `*`(Theta(theta)))))], [`*`(Rho(rho), `*`(Phi(`&varphi;`), `*`(Theta(theta))))])
 

Maple provides the following ODEs governing these three functions. 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`&where`(u(rho, `&varphi;`, theta) = `*`(_F1(rho), `*`(_F2(`&varphi;`), `*`(_F3(theta)))), [{diff(_F3(theta), `$`(theta, 2)) = `+`(`-`(`*`(_F3(theta), `*`(_c[2])))), diff(_F2...
Typesetting:-mprintslash([`&where`(u(rho, `&varphi;`, theta) = `*`(_F1(rho), `*`(_F2(`&varphi;`), `*`(_F3(theta)))), [{diff(_F3(theta), `$`(theta, 2)) = `+`(`-`(`*`(_F3(theta), `*`(_c[2])))), diff(_F2...
 

We proceed to obtain these results from first principles. 

 

Upon division by Typesetting:-mrow(Typesetting:-mi( and multiplication by Typesetting:-mrow(Typesetting:-msup(Typesetting:-mi(Laplace's equation becomes 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[13], `+`(`/`(`*`(2, `*`(rho, `*`(`^`(sin(`&varphi;`), 2), `*`(diff(Rho(rho), rho))))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(`^`(sin(`&varphi;`), 2), `*`(diff(Rho(r...
 

If the terms containing Typesetting:-mrow(Typesetting:-mi( are moved to the right, we have 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[14], `+`(`/`(`*`(2, `*`(rho, `*`(`^`(sin(`&varphi;`), 2), `*`(diff(Rho(rho), rho))))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(`^`(sin(`&varphi;`), 2), `*`(diff(Rho(r...
 

Introducing the separation constant Typesetting:-mrow(Typesetting:-mi( leads to the two equations 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

 

 

Typesetting:-mprintslash([`:=`(q[15], `+`(`/`(`*`(2, `*`(rho, `*`(`^`(sin(`&varphi;`), 2), `*`(diff(Rho(rho), rho))))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(`^`(sin(`&varphi;`), 2), `*`(diff(Rho(r...
Typesetting:-mprintslash([`:=`(q[16], `+`(`-`(`/`(`*`(diff(Theta(theta), `$`(theta, 2))), `*`(Theta(theta))))) = mu)], [`+`(`-`(`/`(`*`(diff(diff(Theta(theta), theta), theta)), `*`(Theta(theta))))) = ...
 

The resulting Typesetting:-mrow(Typesetting:-mi(-equation can be put into the form 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[17], `+`(diff(Theta(theta), `$`(theta, 2)), `*`(Theta(theta), `*`(mu))) = 0)], [`+`(diff(diff(Theta(theta), theta), theta), `*`(Theta(theta), `*`(mu))) = 0])
 

Continuity requires the imposition of the periodic boundary conditions 

 

Typesetting:-mrow(Typesetting:-mi(  

Typesetting:-mrow(Typesetting:-mi( 

 

thus forming a Sturm-Liouville eigenvalue problem for which the solution is Typesetting:-mrow(Typesetting:-mi( Thus, Typesetting:-mrow(Typesetting:-mi(.  Making this change in the companion equation, and dividing by Typesetting:-mrow(Typesetting:-msup(Typesetting:-mi(we have 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[18], `+`(`/`(`*`(2, `*`(rho, `*`(diff(Rho(rho), rho)))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(diff(Rho(rho), `$`(rho, 2)))), `*`(Rho(rho))), `/`(`*`(cos(`&varphi;`...
 

Isolating the terms in Typesetting:-mrow(Typesetting:-mi( yields the separated equation 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[19], `+`(`/`(`*`(2, `*`(rho, `*`(diff(Rho(rho), rho)))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(diff(Rho(rho), `$`(rho, 2)))), `*`(Rho(rho)))) = `+`(`/`(`*`(`^`(n, 2...
 

and introduction of the separation constant Typesetting:-mrow(Typesetting:-mi( leads to the two ODEs 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

 

 

Typesetting:-mprintslash([`:=`(q[20], `+`(`/`(`*`(2, `*`(rho, `*`(diff(Rho(rho), rho)))), `*`(Rho(rho))), `/`(`*`(`^`(rho, 2), `*`(diff(Rho(rho), `$`(rho, 2)))), `*`(Rho(rho)))) = lambda)], [`+`(`/`(`...
Typesetting:-mprintslash([`:=`(q[21], `+`(`/`(`*`(`^`(n, 2)), `*`(`^`(sin(`&varphi;`), 2))), `-`(`/`(`*`(cos(`&varphi;`), `*`(diff(Phi(`&varphi;`), `&varphi;`))), `*`(Phi(`&varphi;`), `*`(sin(`&varphi...
 

The Typesetting:-mrow(Typesetting:-mi(-equation can be manipulated to the form 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[22], `+`(`*`(2, `*`(rho, `*`(diff(Rho(rho), rho)))), `*`(`^`(rho, 2), `*`(diff(Rho(rho), `$`(rho, 2)))), `-`(`*`(Rho(rho), `*`(lambda)))) = 0)], [`+`(`*`(2, `*`(rho, `...
 

from which we see that it is an Euler equation solvable in powers of Typesetting:-mrow(Typesetting:-mi(

 

The remaining ODE is the associated Legendre equation, which we cast in the form 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[23], `+`(`/`(`*`(Phi(`&varphi;`), `*`(`^`(n, 2))), `*`(sin(`&varphi;`))), `-`(`*`(cos(`&varphi;`), `*`(diff(Phi(`&varphi;`), `&varphi;`)))), `-`(`*`(sin(`&varphi;`), `...
 

by bringing all terms to the left and multiplying through by Typesetting:-mrow(Typesetting:-mi(  The same change of variables that was used for Legendre's equation is applied, leading to 

 

> Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[24], `+`(`-`(`/`(`*`(`+`(`*`(y(x), `*`(`^`(n, 2))), `*`(2, `*`(diff(y(x), x), `*`(x))), `-`(`*`(2, `*`(`^`(x, 3), `*`(diff(y(x), x))))), `-`(diff(y(x), `$`(x, 2))), `*...
 

and then 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`+`(`*`(`+`(1, `-`(`*`(`^`(x, 2)))), `*`(diff(y(x), `$`(x, 2)))), `-`(`*`(2, `*`(diff(y(x), x), `*`(x)))), `/`(`*`(`+`(`*`(`^`(n, 2)), `*`(lambda, `*`(`^`(x, 2))), `-`(lambda...
 

after suitable rearrangement.  A slightly better form for this equation can be obtained with the command 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(q[25], `+`(`*`(`+`(1, `-`(`*`(`^`(x, 2)))), `*`(diff(y(x), `$`(x, 2)))), `-`(`*`(2, `*`(diff(y(x), x), `*`(x)))), `*`(`+`(lambda, `/`(`*`(`^`(n, 2)), `*`(`+`(`-`(1), `*`... (7.1.1)
 

but the form typically seen for Legendre's associated equation is 

 

Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mn(  

 

The Sturm-Liouville Eigenvalue Problem 

 

The general solution of Legendre's associated equation is 

 

> Typesetting:-mrow(Typesetting:-mi(
 

y(x) = `+`(`*`(_C1, `*`(LegendreP(`+`(`*`(`/`(1, 2), `*`(`^`(`+`(`*`(4, `*`(lambda)), 1), `/`(1, 2)))), `-`(`/`(1, 2))), n, x))), `*`(_C2, `*`(LegendreQ(`+`(`*`(`/`(1, 2), `*`(`^`(`+`(`*`(4, `*`(lambd...
 

>  
 

a linear combination of the two associated Legendre functions, Typesetting:-mrow(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-mi(  (In extended typesetting mode, Maple writes these functions as Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mi(and Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mi(respectively.)  These are imaginatively called associated Legendre functions of the first and second kinds, respectively.  From Legendre's associated equation we can see that Typesetting:-mrow(Typesetting:-mi(and Typesetting:-mrow(Typesetting:-mi( 

 

In the complex plane, a branch cut for a function is a line or line segment across which the function has a jump discontinuity.  In Maple, there are two cut-regimes for the Legendre functions.  The default regime imposes a cut on the real line coincident with the interval Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mo(  Alternatively, the real intervals Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mo( and Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mn( comprise a second cut regime.  The environment variable _EnvLegendreCut is used to fix the cut regime by assigning it either of the expressions -1..1 or 1..infinity. 

 

To solve Laplace's equation in the interior of a sphere, the associated Legendre functions that arise must have their branch cut outside of the interval Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mo(that is, opposite to the default regime.  Hence, when working in Maple, the branch cut must be shifted via a proper assignment to the environment variable.  However, commands such as evalf or simplify, commands that will most likely be invoked in the context of the solution process, have a remember table, which stores the value assigned to the environment variable.  Reassigning a new value to the environment variable will not change the cut regime unless something is done to modify the remember tables in commands such as evalf and simplify.  This is done by applying the forget command to these operators before changing the assignment to the environment variable. 

 

For the sake of completeness, we illustrate these issues below. 

 

With the default cut in place, the function Typesetting:-mrow(Typesetting:-mi( is discontinuous across the line segment coincident with the real interval Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mo(a discontinuity we sample at Typesetting:-mrow(Typesetting:-mi( with the evaluations 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

 

 

`+`(0.1209600000e-6, `-`(`*`(60.21120000, `*`(I))))
`+`(0.1209600000e-6, `*`(60.21120000, `*`(I)))
 

Another way to see the discontinuity across this cut is symbolically, with 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(`*`(`/`(105, 2), `*`(`^`(`+`(`-`(1), x), `/`(3, 2)), `*`(`^`(`+`(x, 1), `/`(3, 2)), `*`(`+`(`-`(1), `*`(9, `*`(`^`(x, 2)))))))))
 

Careful inspection shows that for Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi(, the term Typesetting:-mrow(Typesetting:-msup(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi( will be the square root of a negative number, from whence the discontinuity 

 

> Typesetting:-mrow(Typesetting:-munder(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-munder(Typesetting:-mo(
 

 

 

`+`(`-`(`*`(`+`(I), `*`(`^`(`+`(1, `-`(x)), `/`(3, 2))))))
`*`(I, `*`(`^`(`+`(1, `-`(x)), `/`(3, 2))))
 

arises.  Now, if we attempt to shift the branch cut with 

 

> Typesetting:-mrow(Typesetting:-mi(
 

it can appear that the behavior of simplify is erratic; simplify may or may not reflect the change in the branch cut, depending on the internal state of Maple.  Here, we see 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(`*`(`/`(105, 2), `*`(`^`(`+`(`-`(1), x), `/`(3, 2)), `*`(`^`(`+`(x, 1), `/`(3, 2)), `*`(`+`(`-`(1), `*`(9, `*`(`^`(x, 2)))))))))
 

Thus, it is possible that we could have obtained exactly the same result as when the branch cut is along Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mo(  The reason for the uncertainty lies in the remember table attached to the simplify command.  Although reassignment to the environment variable is immediate, because of the remember table simplify will not immediately access the new value unless an internal event causes the table to be cleared.  To force the remember table to access the new setting, use 

 

> Typesetting:-mrow(Typesetting:-mi(Typesetting:-mrow(Typesetting:-mi(
 

the effect of which we test via 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(`-`(`*`(`/`(105, 2), `*`(`^`(`+`(1, `-`(x)), `/`(3, 2)), `*`(`^`(`+`(x, 1), `/`(3, 2)), `*`(`+`(`-`(1), `*`(9, `*`(`^`(x, 2))))))))))
 

In either event, notice that now the term Typesetting:-mrow(Typesetting:-mi( is real for Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi(and there will not be a jump across Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mo(as we see from 

 

> Typesetting:-mrow(Typesetting:-munder(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mi(
 

 

 

`*`(`^`(`+`(1, `-`(x)), `/`(3, 2)))
`*`(`^`(`+`(1, `-`(x)), `/`(3, 2)))
 

Relating Maple to the Literature 

 

The associated Legendre function of the first kind appears in the literature with two different symbols.  For example, in the Handbook of Mathematical Functions by Abramowitz and Stegun (Dover Publications), we find the following two formulas relating these functions to Legendre polynomials. 

 

Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mi(  

 

Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(  

 

By the obvious experiment, we can conclude that in Maple 

 

Typesetting:-mrow(Typesetting:-mi(  

 

Indeed, we construct Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mi( as 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(`-`(`*`(`^`(`+`(1, `-`(`*`(`^`(x, 2)))), `/`(3, 2)), `*`(`+`(`*`(`/`(945, 2), `*`(`^`(x, 2))), `-`(`/`(105, 2))))))) (7.3.1)
 

and compare it to Typesetting:-mrow(Typesetting:-mi( in the form 

 

> Typesetting:-mrow(Typesetting:-mi(
 

`+`(`-`(`*`(`/`(105, 2), `*`(`^`(`+`(1, `-`(x)), `/`(3, 2)), `*`(`^`(`+`(x, 1), `/`(3, 2)), `*`(`+`(`-`(1), `*`(9, `*`(`^`(x, 2)))))))))) (7.3.2)
 

On Typesetting:-mrow(Typesetting:-mo(, the radicals appearing in both expressions are equivalent, as demonstrated by the graphs in Figure 6. 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Plot_2d  
 

Figure 6   Graphs of Typesetting:-mrow(Typesetting:-mi( (red) and Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mi( (black) 

Orthogonality of the Eigenfunctions 

 

The orthogonality relation for the associated Legendre functions of the first kind is 

 

Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mo(  

 

a relation Maple can instantiate, but not easily establish from first principles.  For example, Table 2 lists some integrals for which Typesetting:-mrow(Typesetting:-mi(while Table 3 lists some for which Typesetting:-mrow(Typesetting:-mi(comparing the computed and formulaic values of the integral. 

 

> Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Int(`.`(LegendreP(2, 1, x), LegendreP(1, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(3, 1, x), LegendreP(1, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(3, 1, x), LegendreP(2, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(3, 2, x), LegendreP(2, 2, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(4, 1, x), LegendreP(1, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(4, 1, x), LegendreP(2, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(4, 2, x), LegendreP(2, 2, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(4, 1, x), LegendreP(3, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(4, 2, x), LegendreP(3, 2, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(4, 3, x), LegendreP(3, 3, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 1, x), LegendreP(1, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 1, x), LegendreP(2, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 2, x), LegendreP(2, 2, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 1, x), LegendreP(3, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 2, x), LegendreP(3, 2, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 3, x), LegendreP(3, 3, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 1, x), LegendreP(4, 1, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 2, x), LegendreP(4, 2, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 3, x), LegendreP(4, 3, x)), x = -1 .. 1) = 0
Int(`.`(LegendreP(5, 4, x), LegendreP(4, 4, x)), x = -1 .. 1) = 0
 

> Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Int(`*`(`^`(LegendreP(1, 1, x), 2)), x = -1 .. 1) = `/`(4, 3), `/`(4, 3)
Int(`*`(`^`(LegendreP(2, 1, x), 2)), x = -1 .. 1) = `/`(12, 5), `/`(12, 5)
Int(`*`(`^`(LegendreP(2, 2, x), 2)), x = -1 .. 1) = `/`(48, 5), `/`(48, 5)
Int(`*`(`^`(LegendreP(3, 1, x), 2)), x = -1 .. 1) = `/`(24, 7), `/`(24, 7)
Int(`*`(`^`(LegendreP(3, 2, x), 2)), x = -1 .. 1) = `/`(240, 7), `/`(240, 7)
Int(`*`(`^`(LegendreP(3, 3, x), 2)), x = -1 .. 1) = `/`(1440, 7), `/`(1440, 7)
Int(`*`(`^`(LegendreP(4, 1, x), 2)), x = -1 .. 1) = `/`(40, 9), `/`(40, 9)
Int(`*`(`^`(LegendreP(4, 2, x), 2)), x = -1 .. 1) = 80, 80
Int(`*`(`^`(LegendreP(4, 3, x), 2)), x = -1 .. 1) = 1120, 1120
Int(`*`(`^`(LegendreP(4, 4, x), 2)), x = -1 .. 1) = 8960, 8960
Int(`*`(`^`(LegendreP(5, 1, x), 2)), x = -1 .. 1) = `/`(60, 11), `/`(60, 11)
Int(`*`(`^`(LegendreP(5, 2, x), 2)), x = -1 .. 1) = `/`(1680, 11), `/`(1680, 11)
Int(`*`(`^`(LegendreP(5, 3, x), 2)), x = -1 .. 1) = `/`(40320, 11), `/`(40320, 11)
Int(`*`(`^`(LegendreP(5, 4, x), 2)), x = -1 .. 1) = `/`(725760, 11), `/`(725760, 11)
Int(`*`(`^`(LegendreP(5, 5, x), 2)), x = -1 .. 1) = `/`(7257600, 11), `/`(7257600, 11)
 

Table 2   Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mo( for Typesetting:-mrow(Typesetting:-mi( 

Table 3   For Typesetting:-mrow(Typesetting:-mi(Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mo(compared to Typesetting:-mrow(Typesetting:-mfrac(Typesetting:-mrow(Typesetting:-mfenced(Typesetting:-mrow(Typesetting:-mi( 

Fourier-Legendre Series 

 

The functions Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mi(together with the functions Typesetting:-mrow(Typesetting:-msubsup(Typesetting:-mi(form a complete set on the rectangle Typesetting:-mrow(Typesetting:-mn(  Consequently, a function Typesetting:-mrow(Typesetting:-mi( can be expanded in a Fourier-Legendre series of the form 

 

Typesetting:-mrow(Typesetting:-mi(  

 

where 

 

Typesetting:-mrow(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-mi( 

Typesetting:-mrow(Typesetting:-mi( 

Typesetting:-mrow(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-mn( 

Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( 

Typesetting:-mrow(Typesetting:-mi( and Typesetting:-mrow(Typesetting:-mn( 

Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( 

 

For example, take Typesetting:-mrow(Typesetting:-mi( as 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Typesetting:-mprintslash([`:=`(g, `+`(`*`(`/`(1, 6), `*`(`&varphi;`, `*`(`+`(Pi, `-`(`&varphi;`)), `*`(theta, `*`(`+`(`*`(2, `*`(Pi)), `-`(theta)))))))))], [`+`(`*`(`/`(1, 6), `*`(`&varphi;`, `*`(`+`(...
 

a function whose graph is seen in Figure 7. 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Plot  
 

Figure 7   Graph of Typesetting:-mrow(Typesetting:-mi( 

It is also useful to define the function 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

d(k, m) = `+`(`/`(`*`(2, `*`(factorial(`+`(k, m)))), `*`(factorial(`+`(k, `-`(m))), `*`(`+`(`*`(2, `*`(k)), 1)))))
 

whose values appear in the denominators of the expressions for the series coefficients. The computation of these coefficients is slightly simplified by recognizing that all the Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( are zero by symmetry.  Then, the first few Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( are given by 

 

> Typesetting:-mrow(Typesetting:-mo(
 

and the first few Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi( are given by 

 

> Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
Typesetting:-mrow(Typesetting:-mo(
 

A partial sum of the Fourier-Legendre series for Typesetting:-mrow(Typesetting:-mi( is then 

 

> Typesetting:-mrow(Typesetting:-mi(
 

the graph of which can be seen in Figure 8. 

 

> Typesetting:-mrow(Typesetting:-mi(
Typesetting:-mrow(Typesetting:-mi(
 

Plot  
 

Figure 8   Graph of partial sum of the Fourier-Legendre series for Typesetting:-mrow(Typesetting:-mi( 

To estimate the accuracy of this approximation, the difference Typesetting:-mrow(Typesetting:-mi( is plotted in Figure 9. 

 

> Typesetting:-mrow(Typesetting:-mi(
 

Plot  
 

Figure 9   Graph of Typesetting:-mrow(Typesetting:-mi( as an estimate of the accuracy of the partial sum Typesetting:-mrow(Typesetting:-mi( 

 

Legal Notice: The copyright for this application is owned by Maplesoft. The application is intended to demonstrate the use of Maple to solve a particular problem. It has been made available for product evaluation purposes only and may not be used in any other context without the express permission of Maplesoft.  
 

Image