Re: Preventing LegendreP from self-extracting in manipulations

• To: mathgroup at smc.vnet.net
• Subject: [mg57850] Re: Preventing LegendreP from self-extracting in manipulations
• From: dh <dh at metrohm.ch>
• Date: Fri, 10 Jun 2005 02:29:13 -0400 (EDT)
• References: <d893ok\$svp\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hi Vladislav,
The operator "Function" or & does not evaluate its arguments (it has the
Attribute "HoldAll"). To get an evaluation you can use "Evaluate" like:
FF = Evaluate[.2FF1[#1] + .3FF2[#1]] &
The problem with this is that it evaluates down to the polynomial basis
x^n that you do jnot want.
For the better solutions, see below:

> Hi, all,
>
> I have already tried to post the message, but it went lost. I repeat it
>
> Can somebody help me with the following. I need present some functions
> (prolate spheroidal functions) in the basis of the Legendre
> polynomials. I.e.
> I have functions like
>
> FF1 = 0.6 LegendreP[5, #1] + 0.7 LegendreP[6, #1] &
> FF2 = 0.3 LegendreP[5, #1] + 0.2 LegendreP[6, #1] &
>
> I want to manipulate these functions and remain in the basis of prolate
> functions.

If you want to stay in the basis of prolate function, you simply set up
the definition only for numerical arguments, like:
FF1[x_Number]:= 0.6 LegendreP[5, x] + 0.7 LegendreP[6, x]
with this, the FF1 is not touched, except when it has a numerical argument

> For example I want to create a linear combination of functions, or
> something like this.
>
> FF = .2FF1[#1] + .3FF2[#1] &
>
> It works well from the point of view of finding the numerical result,
> but it do not give
> the presentaion of the function in the basis of the Legendre
> polynomials

It is a bit more difficult, if you want to work in the basis of Legendre
Polynomials. You would first define your own Legendre Polynomials that
only evaluate for numerical arguments, like
myLegendreP[ord_Integer,x_Number]:= LegendreP[ord,x]
subsequentially you define the spherical prolates
FF1 = 0.6 myLegendreP[5, #1] + 0.7 myLegendreP[6, #1] &
FF2 = 0.3 myLegendreP[5, #1] + 0.2 myLegendreP[6, #1] &
and finally FF:
FF= Evaluate[ Simplify[ .2FF1[#1] + .3FF2[#1] ]] &

>
> I would like to have create a function which would give the result like
>
> FFX = 0.9 LegendreP[5, #1] + 0.9 LegendreP[6, #1] &, so that I could
> see the presentaion
> of the function by typing FFX and obtaining  0.9 LegendreP[5, #1] + 0.9
> LegendreP[6, #1] &.
> In practice these functions contain much more terms and having the form
> like
>  0.9 LegendreP[5, #1] + 0.9 LegendreP[6, #1] & is very important. In
> the same way
> I would not like to have the explicit presentation as plolinomials,
> like -0.28125+
> 1.6875  w + 5.90625 w^2 + .. because of loss of accuracy for future
> results.
>
> Sincerely,
>