Re: Better recursive method?

• To: mathgroup at smc.vnet.net
• Subject: [mg72832] Re: Better recursive method?
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Sun, 21 Jan 2007 06:18:05 -0500 (EST)
• Organization: The Open University, Milton Keynes, UK
• References: <eosh0f\$9bs\$1@smc.vnet.net>

```nandan wrote:
> Hallo:
>
> I have following recursive functions:
> pi(i, theta) := (2n-1)/(n-1) cos(theta) pi(i-1, theta) - n/(n-1)
> pi(i-2,theta)
> tau(i,theta) := n pi(i, theta) - (n+1) pi(i-1,theta)
>
> with intial values:
> pi(0,theta) := 0
> pi(1,theta) := 1
>
> These should calculate the following function:
> S1(theta) := sum(i=1-nstop) (2i+1)/(i(i+1)) (a(i) pi(i,theta) - b(i)
> tau(i,theta)) (where nstop=40)
>
> This should be pretty easy to calculate for Mathematica. I have written
> it the following way:
> pi[0,theta] := 0;
> pi[1,theta] := 1;
-------^^^^^
Dubious syntax (will work only on specific cases): should be theta_
(with a Blank pattern matching.)

> pi[i_, theta_] := pi[i, theta] =(2n-1)/(n-1) Cos[theta] pi[i-1, theta]
> - n/(n-1) pi[i-2,theta]
----^
What is n? When Mathematica evaluates this expression on my system I get
a recursion depth limit exceeded.

> tau[i_,theta_] := n pi[i, theta] - (n+1) pi[i-1,theta]
> S1Temp[i_,theta_] := (2i+1)/(i(i+1)) (a[i] pi[i,theta] - b[i]
> tau[i,theta])
> S1(theta) := Sum[ S1Temp[i,theta], {i, 1, nstop}]
----^-----^
Wrong syntax: could you please post the actual "working" code?

> Well, it works fine, but it takes enormous time. I have introduced
> recursive function to save time for calculation of Legendre Polynomials
> of which the function 'pi' and 'tau' consist of. But the same function
> if I write with 2 loops each for 'theta' and 'i' in IDL, it calculates
> in fraction of a second. Even the simple calculation of 'pi[40,pi/4]'

You are using exact arithmetic (infinite precision managed by software.)
This is the most precise arithmetic mmodel, but also the slowest. Try
pi[40.0,Pi/4] to use machine precision numbers.

Regards,
Jean-Marc

> took more than 350 seconds.
>
> What could be the problem in my logic. Is there any other better way to
> write recursive functions in Mathematica?
>
> Any help will be appreciated!
>
> Regards,
> nandan
>

```

• Prev by Date: Re: Better recursive method?
• Next by Date: Re: Help with plotting and iterations
• Previous by thread: Re: Better recursive method?
• Next by thread: Re: Better recursive method?