Построение фазового портрета в 2D и 3D в Xcos
В представленных ранее примерах, мы рассмотрели вывод графической составляющей моделируемых систем двумя способами: с помощью осциллографов CMSCOPE и CSCOPE и путём задания контекста. Однако в обоих случаях графики строились в системах координат, где на горизонтальной оси откладывались временные отсчеты, а по вертикальной – значения функции в указанные моменты времени. И, хотя вопрос разложения дифференциальных уравнений на фазовые переменные был затронут в статье, не освещенным остался вопрос построения фазового портрета. Этой, столь полезной для анализа поведения решений моделируемых систем дифференциальных уравнений, процедуре и будет посвящён данный материал.
Мы рассмотрим два подхода к построению фазовых траекторий динамической системы на примере аттрактора Рёсслера. Данная система дифференциальных уравнений выбрана не случайно. Дело в том, что при моделировании системы Рёсслера, именно фазовый портрет представляет интерес, построение же интегральных кривых, как функций времени, не даёт полной картины происходящих в системе процессов.
Аттрактор Рёсслера — это хаотический аттрактор, которым обладает система дифференциальных уравнений Рёсслера вида:
(1)\begin{cases} \dot{x}=-y-z \\ \dot{y}=x+ay \\ \dot{z}=b+z(x-c) \end{cases}
\( a>0, b>0,c>0 \)
При значениях параметров \( a=b=0.2 \) и \( 2.6 \leq c \leq 4.2 \) уравнения Рёсслера обладают устойчивым предельным циклом. При этих значениях параметров период и форма предельного цикла совершают последовательность удвоения периода.
Сразу же за точкой \( c=4.2 \) возникает явление хаотического аттрактора. Чётко определённые линии предельных циклов расплываются и заполняют фазовое пространство бесконечным счетным множеством траекторий, обладающим свойствами фрактала. Именно случай бесконечных самоповторяющихся траекторий мы и замоделируем.
Построим блок-схему системы (1), задав параметры в контексте со значениями \( a=b=0.1, с=14 \).
Для построения трёх уравнений системы (1) нам понадобятся блоки INTEGRAL_m, BIGSOM_f, PRODUCT, CONST и GAINBLK.
Двумерный фазовый портрет в Xcos
В рамках первого подхода к построению фазового портрета, воспользуемся
блоком
, который располагается на палитре «Регистрирующие устройства» и осуществляет построение графика зависимости \( y(x) \), где \( x \) отвечает за значения по оси абсцисс, а значения \( y(x) \)откладываются на оси ординат.
Приступим к построению блочной диаграммы Xcos.
1. Для начала, добавьте на рабочую область 3 блока интегратора INTEGRAL_m с нулевыми начальными значениями, 4 блока BIGSOM_f, блок умножения переменных PRODUCT и блоки для задания коэффициентов CONST и GAINBLK.
Расположите указанные блоки в порядке использования в уравнениях. В результате должна получиться заготовка, приближенная к изображённой на рис. 57.
2. На построении соединительных линий между блоками Xcos для первых двух уравнений системы Рёсслера не будем подобно останавливаться, так как оно представляется легко осуществимым на основе приобретённого читателем опыта. Результат установления связей для переменных \( y, x \) отображен на рис. 58.
3. Сбор блок-схемы третьего уравнения системы Рёсслера нужно начать со второго слагаемого, то есть осуществить произведение переменной \( z \) и скобки \( (x-c)\), см. рис. 59.
4. Осталось только подвести нужные соединительные линии на регулярные входы последнего сумматора и направить его выход на соответствующий интегратор, \( z \).
Результатом данных манипуляций будет схема, блок-изображённая на рис. 60.
5. Далее, необходимо добавить блоки для осуществления моделирования CLOCK_c, END, проведя соединительные линии и настроив внутренние параметры блоков для моделирования на протяжении 300сек.
Для вывода фазовых траекторий, добавьте блок CSCOPXY, на регулярные входы которого направьте интересующие нас переменные \( y, x \) для вывода графика \( y(x) \), а на управляющий вход – соединительную линию от индикатора отсчетов CLOCK_c.
Обратите внимание, что названия входов блока CSCOPXY иллюстрируют построение функции \( y(x) \).
В результате блок-схема, реализующая построение траекторий аттрактора Рёсслера на фазовой плоскости примет вид, такой, как показано на рис. 61.
Запустите моделирование на протяжении 300сек., настройте внутренние параметры блока CSCOPXY так, чтобы странный аттрактор хорошо вписывался бы в координатную сетку, как показано на рис. 62.
Итак, результатом моделирования бифуркаций аттрактора Рёсслера будет фазовая траектория \( y(x) \), иллюстрирующая сценарий перехода к хаосу через каскады бифуркаций удвоения периода Фейгенбаума, субгармонические каскады и гомоклинический каскад бифуркаций.
Построение трёхмерного графика в Xcos
Для большей наглядности результата моделирования, заменим блок CSCOPXY блоком CSCOPXY3D.
Функциональный блок
располагается на палитре «Регистрирующие устройства» и служит он для отображения трёхмерной системы координат, что становится понятно из его названия.
Изменённая часть блок-схемы и результат моделирования аттрактора Рёсслера представлены на рис. 63а,б.
Построение 3D графика с помощью контекста в Xcos
Рассмотрим ещё один способ построения фазового портрета систем дифференциальных уравнений, теперь уже с использованием контекста и блоков буферизации данных TOWS_c.
Добавьте 3 блока буферизации TOWS_c – по одному для каждой переменной моделируемой системы.
Во внутренних параметров каждого из блоков TOWS_c укажите число запоминаемых точек = 10000 и задайте ассоциируем имена переменных x_var, y_var, z_var в соответствии с сигналами, подающимися на регулярные входы TOWS_c (см. рис. 64).
Теперь значения переменных \( x,y,z \) для всех временных отсчетов записываются в одноимённые переменные x_var, y_var, z_var. Эти переменные можно использовать в контексте для построения графиков посредством стандартных Scilab – функций, например plot() и param3d().
Для того, чтобы отобразить две системы координат в одном графическом окне, добавьте в контекст следующие строки:
subplot(121);
plot(x_var.time, x_var.values, "r", "Linewidth", 2);
plot(y_var.time, y_var.values, "g", "Linewidth", 2);
plot(z_var.time, z_var.values, "b", "Linewidth", 2);
legend("x","y","z"); xgrid();
xtitle("Фазовые переменные аттрактора Рёсслера", "t, время", "x, y, z");
subplot(122);
param3d(x_var.values, y_var.values, z_var.values); xgrid();
xtitle("Аттрактора Рёсслера в 3D");
Графики в контексте Xcos.
После запуска моделирования, появится одно графическое окно: на первой координатной сетке будут зависимости \( x(t), y(t), z(t) \), а на второй – трёхмерный график аттрактора Рёсслера. как на рис. 65.
Комментарии