Как правило, вы должны использовать 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}}
Пара связанных точек:
Лучше не использовать заглавные буквы в именах символов, поскольку они могут конфликтовать со встроенными функциями.
Вы можете рассмотреть Divisible[n, 2]
вместо Mod[n, 2] == 0
, если хотите.