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
- Follow-Ups:
- Re: Better recursive method?
- From: danl@wolfram.com
- Re: Better recursive method?