Re: Recursive function
- To: mathgroup at smc.vnet.net
- Subject: [mg115915] Re: Recursive function
- From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
- Date: Tue, 25 Jan 2011 06:31:26 -0500 (EST)
- References: <ihm4kn$kec$1@smc.vnet.net>
You need to make x explicitely depend on a and b as well: ClearAll[x]; 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[ Map[x[#, a, b] &, Range[0, 3]], {a, -1, 1, 0.5}, {b, -1, 1, .5}] Cheers -- Sjoerd On Jan 25, 10: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. > > Thanks!