Re: Recursive function
- To: mathgroup at smc.vnet.net
- Subject: [mg115937] Re: Recursive function
- From: Dana DeLouis <dana.del at gmail.com>
- Date: Wed, 26 Jan 2011 05:06:52 -0500 (EST)
On Jan 25, 4:20 am, StatsMath <stats.ma... at gmail.com> wrote:
> I am trying to compute the following function:
>
> x[t] = a * x[t-1] + b * x[t-2]
> x[0] = 1
> x[1] = 1
>
> For different values of a & b.
>
> Would like to use Manipulate[] so that I can change the values of a & b
<snip>
Hi. I believe Table could be another option
x[t_,a_,b_]:=a*x[t-1,a,b]+b*x[t-2,a,b];
x[0,a_,b_]=1;
x[1,a_,b_]=1;
Manipulate[Table[x[t,a,b],{t,0,10}],{a,-1,1,1/2},{b,-1,1,1/2}]
Perhaps if you wanted to change the number of returned values:
x[t_,a_,b_]:=a*x[t-1,a,b]+b*x[t-2,a,b];
x[0,a_,b_]=1;
x[1,a_,b_]=1;
Manipulate[Table[x[t,a,b],{t,0,terms}],{terms,0,20,1},{a,-1,1,1/2},{b,-1,1,1/2}]
As a side note, what you started with looked like you were going the RSolve route:
Not as elegant a solution as you have, but...
equ={
x[t]=a*x[t-1]+b*x[t-2],
x[0]=1,
x[1]=1
};
x[t]/.RSolve[equ,x[t],t]//FullSimplify//First
<< output here >>
Replace Sqrt[a^2+4 b] with 'k since Sqrt[a^2+4 b] occurs often.
<< a little better >>
Since k is in the denominator, combinations of a & b could make k = 0 (Divide by zero error). Hence...
Limit[ %, k->0]
2^-t a^(-1+t) (a+2 t-a t)
Therefore...
f[t_,a_,b_]:=Module[{k=Sqrt[a^2+4 b]},
If[Or[t=0,t=1],1,
If[k=0,
2^-t a^(-1+t) (a+2 t-a t),
(1/k)2^(-1-t) ((a-k)^t (-2+a+k)+(2-a+k) (a+k)^t)]//N//Chop//Rationalize]]
Manipulate[Table[f[t,a,b],{t,0,terms}],{terms,0,20,1},{a,-1,1,1/2},{b,-1,1,1/2}]
= = = = = = = = = =
HTH : >)
Dana DeLouis
To understand recursion, one must first understand recursion. :>o