MathGroup Archive 2007

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

Search the Archive

Better recursive method?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg72802] Better recursive method?
  • From: "nandan" <joshi.nandan at gmail.com>
  • Date: Sat, 20 Jan 2007 03:24:43 -0500 (EST)

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;
pi[i_, theta_] := 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]
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}]

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]'
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: Help with plotting and iterations
  • Next by Date: Wolfram Workbench: SVN & notebook diffs
  • Previous by thread: Re: Help with plotting and iterations
  • Next by thread: Re: Better recursive method?