MathGroup Archive 2007

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

Search the Archive

Better recursive method?


I have following recursive functions:
pi(i, theta) := (2n-1)/(n-1) cos(theta) pi(i-1, theta) - n/(n-1)
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]
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!


  • 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?