3

Mathematica で with 条件を作成しようとしていRecurrenceTableますが、再帰的なものは正しく機能していますが、完全には評価されません。

In:= RecurrenceTable[{x[n] == If[Mod[n, 2] == 0, x[n - 1], y[n - 1]], 
       y[n] == If[Mod[n, 2] == 0, R x[n - 1] (1 - x[n - 1]), y[n - 1]], 
       x[1] == x0, y[1] == 0}, {x, y}, {n, 1, 10}]

Out:= {{0.25, 0.}, {x[1], 3 (1 - x[1]) x[1]}, {y[2], y[2]}, {x[3], 
        3 (1 - x[3]) x[3]}, {y[4], y[4]}, {x[5], 3 (1 - x[5]) x[5]}, {y[6], 
        y[6]}, {x[7], 3 (1 - x[7]) x[7]}, {y[8], y[8]}, {x[9], 
        3 (1 - x[9]) x[9]}}

これらは正しい結果ですが、数値形式にする必要があります。{{0.25, 0.}, {0.25, 0.5625} ...

これを行う方法はありますか?ありがとう!

4

2 に答える 2

8

通常、Piecewise数学関数に使用しIf、プログラミング フロー用に予約する必要があります。

If次を使用して、多くのステートメントを変換できますPiecewiseExpand

If[Mod[n, 2] == 0, x[n - 1], y[n - 1]] // PiecewiseExpand
If[Mod[n, 2] == 0, r*x[n - 1] (1 - x[n - 1]), y[n - 1]] // PiecewiseExpand

最終的なコードは次のようになります。

r = 3;
x0 = 0.25;
RecurrenceTable[
 {x[n] == Piecewise[{{x[n - 1], Mod[n, 2] == 0}}, y[n - 1]],
  y[n] == Piecewise[{{r*x[n - 1] (1 - x[n - 1]), Mod[n, 2] == 0}}, y[n - 1]],
  x[1] == x0,
  y[1] == 0},
 {x, y},
 {n, 10}
]
{{0.25, 0.}, {0.25, 0.5625}, {0.5625, 0.5625}, {0.5625,
  0.738281}、{0.738281、0.738281}、{0.738281、0.579666}、{0.579666、
  0.579666}、{0.579666、0.73096}、{0.73096、0.73096}、{0.73096、0.589973}}

関連するいくつかのポイント:

  1. 組み込み関数と競合する可能性があるため、シンボル名に大文字を使用しないことをお勧めします。

  2. Divisible[n, 2]ご希望があれば代わりにご検討Mod[n, 2] == 0いただけます。

于 2011-10-14T07:33:22.763 に答える
3
RecurrenceTable[{
 x[n] == Boole[ Mod[n,2] == 0 ] x[n-1] +
         Boole[ Mod[n,2] != 0 ] y[n-1],
 y[n] == Boole[ Mod[n,2] == 0 ] 3 x[n-1] (1-x[n-1]) + 
         Boole[ Mod[n,2] != 0 ] y[n-1],
 x[1] == .25, y[1] == 0},
 {x, y}, {n, 1, 10}]

編集R = 3してx0 = .25、期待する出力を提供します。

于 2011-10-14T05:52:55.193 に答える