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

MathGroup Archive 2011

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

Search the Archive

Recursive function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg115898] Recursive function
  • From: StatsMath <stats.math8 at gmail.com>
  • Date: Tue, 25 Jan 2011 04:20:19 -0500 (EST)

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.

Thanks!



  • Prev by Date: Need help with Mathematica
  • Next by Date: Re: Mathematica 20x slower than Java at arithmetic/special functions, is
  • Previous by thread: Re: Need help with Mathematica
  • Next by thread: Re: Recursive function