Re: question RE: difference equations
- To: mathgroup at smc.vnet.net
- Subject: [mg26111] Re: [mg26066] question RE: difference equations
- From: BobHanlon at aol.com
- Date: Tue, 28 Nov 2000 01:55:58 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 11/22/00 2:44:07 AM, john.mcarthur at brasenose.oxford.ac.uk writes: >I am a new Mathematica user so apologize for the basic nature of my >question: > >I want to set up a system of simultaneous difference equations but am >having trouble with the syntax. Essentially I would like to map the growth >of a system as follows: > >y1(t)=y1(t-1) + a*y2(t-1) + b*y3(t-1)... + xx*yn(t-1) >y2(t)=y2(t-1) + c*y1(t-1) + d*y3(t-1)... + yy*yn(t-1) >... >yn(t)=yn(t-1) + x*y1(t-1) + z*y2(t-1)... + zz*y[n-1](t-1) > >I know how to set up a univariate recursive equation, but am not clear >on >how to set up a multivariate form. My most common error message is one >of >"recursion limit reached." Any suggestions (and possibly advice >on the simplest way to set up a system like the one above) would be >greatly appreciated. > dim = 3; var = Table[ToExpression["y" <> ToString[k]], {k, dim}]; coef = {{1, 2, -3}, {1, 0, 1}, {1, -2, 2}}; Clear[Evaluate[Sequence @@ var]]; Initialize recursion: (#[0] = 1) & /@ var; Thread[Evaluate[#[t_?Positive] & /@ var] := Evaluate[coef.(#[t - 1] & /@ var)]]; For example, the definition of y1 is ?y1 "Global`y1" y1[0] = 1 y1[(t_)?Positive] := y1[-1 + t] + 2*y2[-1 + t] - 3*y3[-1 + t] Table[#[k] & /@ var, {k, -1, 5}] // ColumnForm {y1[-1], y2[-1], y3[-1]} {1, 1, 1} {0, 2, 1} {1, 1, -2} {9, -1, -5} {22, 4, 1} {27, 23, 16} Bob Hanlon