Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

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

Search the Archive

Re: Recursive function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg115926] Re: Recursive function
  • From: Dana DeLouis <dana.del at gmail.com>
  • Date: Wed, 26 Jan 2011 05:04:49 -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 dynamically and observe what the resulting x[t] values are.
>
> So wrote the following piece of code:
>
> Clear["Global`*"]
> x[t_Integer] := x[t] = a x[t - 1] + b x[t - 2]
> x[0] = 1;
> x[1] = 1;
> Manipulate[Map[x[#] &, Range[0, 3]], {a, -1, 1, 0.5}, {b, -1, 1, .5}]
>
> Got the following results:
> {1, 1, a + b, b + a (a + b)}
>
> The a & b values are not being propagated so tried the following:
>
> Clear["Global`*"]
> x[t_Integer] := x[t] = a x[t - 1] + b x[t - 2] /; t > 2
> x[0] = 1;
> x[1] = 1;
> Manipulate[
>  Map[(If[# == 0 || # == 1, 1, a x[# - 1] + b x[# - 2]]) &,
>   Range[0, 3]], {a, -1, 1, 0.5}, {b, -1, 1, .5}]
>
> Got the following result:
> {1, 1, -2, -1 - a - b}
>
> Finally got it working with the following code:
>
> Clear["Global`*"]
> Manipulate[
>  Map[(If[# == 0 || # == 1, x[#] = 1,
>      x[#] = a x[# - 1] + b x[# - 2]]) &, Range[0, 20]], {a, -1, 1,
>   0.5}, {b, -1, 1, .5}]
>
> The above code looks ugly, so wondering if there is a different way to
> handle recursive functions.


Hi.  Here's something a little different.
Here's what we are given:

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;

equ=Table[x[j,a,b],{j,0,5}]

{1,1,a+b,b+a (a+b),b (a+b)+a (b+a (a+b)),b (b+a (a+b))+a (b (a+b)+a (b+a (a+b)))}

gf=FindGeneratingFunction[equ,x]//FullSimplify

((a-1) x-1)/(x (a+b x)-1)

I included 'n, for the size of the output:

Manipulate[CoefficientList[
    Series[((a-1) x-1)/(x (a+b x)-1),{x,0,n}],x],{n,0,20,1},{a,-1,1,1/2},{b,-1,1,1/2}]

= = = = = = = = = =
HTH  : >)
Dana DeLouis



  • Prev by Date: Re: Recursive function
  • Next by Date: Re: Recursive function
  • Previous by thread: Re: Recursive function
  • Next by thread: Re: Recursive function