Моделирование системы хаотической динамики в C++.

В следующей статье я представлю фундаментальный обзор динамической системы и дам вам общее представление о представлении модели. Во второй части я представлю введение в хаотическую теорию динамических систем (хаотическую динамику). Я буду изображать интересные системы, которые буду моделировать на C++ (код на моем GitHub).

Заголовочный файл (для библиотеки графиков) должен находиться в той же папке, что и ваш cpp (файл, который вы можете клонировать из моего репозитория).
Ваша программа может быть скомпилирована следующим образом:

//compile
g++ my_prog.cpp -o my_prog -I/usr/include/python3.8 -lpython3.8// 
//run
./my_prog
//folder tree
├── my_prog
├── my_prog.cpp
├── matplotlibcpp.h

Динамическая система.

Системы, которые изменяются во времени, называются динамическими системами и характеризуются одним или несколькими уравнениями. Динамические уравнения, например, можно использовать для объяснения изменений населения, погоды или движения роботов. Динамические системы будут описываться дифференциальными уравнениями, которые включают производную (мгновенное изменение) функции.

Поскольку нам нужно уловить интуицию, я объясню все компоненты динамического уравнения (дифференциального уравнения).

Вектор X представляет состояние нашей системы, которая имеет минимальное число набор значений, которые нам нужны для описания нашей системы (поведения). Если я анализирую маятник, система однозначно определяется своим углом тета и угловой скоростью вокруг оси вращения.

F — это то, что мы называем динамикой, и это набор функций f1, f2, f3, … fn, который описывает динамику состояния 1, состояния 2, состояния 3 и состояния n. Функция F — это векторное поле, предоставляющее информацию о том, как система будет меняться во времени, исходя из текущего состояния X. Мы назвали F векторным полем, поскольку оно дает нам для каждого пространства состоянийX информацию о направлении производной вектора.

t, как и ожидалось, — это время, и это фундаментальный «компонент» динамических систем, который описывает, как система меняется с течением времени.

Вектор u связан с активным управлением динамической системой. Когда мы ведем машину, мы можем двигаться быстрее, нажимая на педаль скорости. Это наш внешний вход (управляющий сигнал) в систему, влияющий на реакцию.

𝛽 — это компонент, который включает в себя другие параметры системы, которые мы не можем контролировать в явном виде, но изменение значения может изменить динамическое поведение (отклик) системы. Если рассматривать снова машину. Динамика автомобиля (отклик) будет различаться при управлении автомобилем одним человеком без пассажиров и при полной загрузке автомобиля (максимальное количество пассажиров и мест багажа).

Мы не можем забывать и о других нарушениях d, таких как замечание в системе, неточность или снижение качества механической системы, которую мы пытаемся контролировать.

Мне кажется очень важным упомянуть кое-что о проблемах, с которыми мы сталкиваемся при построении динамической модели системы и влияющих на ее поведение.

  1. В общем случае динамическая система может быть описана законами Ньютона, лагранжианом или гамильтонианом, однако эти уравнения только приближают реальность, так как часто система сложна и описывается множеством параметров, переменных и соотношений. Иногда у нас нет доступа к этим параметрам, поскольку их невозможно измерить или их трудно извлечь, или мы не знаем об их существовании или взаимосвязях. Обычно мы используем модели, приближенные к «реальному миру или реальному поведению».
  2. Второй важной проблемой, связанной с уравнением, используемым для описания динамики, является нелинейность (имеется в виду несоблюдение суперпозиции — аддитивности и однородности). Эти системы трудно синтезировать и анализировать.
  3. В динамической системе — вектор X имеет много измерений. Погода или человеческий мозг могут быть описаны многими переменными, часто неизвестными или непредсказуемыми. Задача здесь состоит в том, чтобы выбрать те, на которые больше всего влияет системная динамика.
  4. Динамика системы также может быть хаотичной (мы будем ближе в следующем разделе следующей статьи). Как правило, это означает, что динамика системы может быть очень чувствительна к небольшим изменениям (параметр 𝛽), начальных условий или скрытых состояний. Как я уже говорил в своей статье об аттракторе Лоренца, небольшие изменения в начальном состоянии влияют на экстремальные изменения через определенное время. Это означает — чувствителен к небольшим изменениям, начальным условиям или другим параметрам модели.
  5. Все параметры, описывающие систему, могут быть связаны с неопределенностью, поскольку все компоненты используемой нами динамической модели являются неопределенными (стохастическими) — мы можем определить вероятность того, как мы влияем на систему, что мы измеряем, как мы измеряем, мы даже не уверены о времени (система может иметь некоторую задержку) и т.д.

Как видите, динамическую систему сложно моделировать, эксплуатировать и изменять с течением времени. Если вам нужна дополнительная информация, я рекомендую вам изучить предметную область систем управления и/или посмотреть Канал профессора Стива Брантона на YouTube или TechTalk Брайана Дугласа, доступные здесь и здесь.

Хаос.

Теория хаоса актуальна для детерминированных систем, поведение которых теоретически предсказуемо. Хаотические системы сначала кажутся предсказуемыми, прежде чем оказаться случайными, поведение таких систем невозможно определить.
Примечание. Все симуляции на C++, изображенные здесь, доступны на моем Github.

Мы можем определить время, в течение которого поведение системы хаотично. Однако это зависит от трех параметров:

  1. степень неопределенности может быть допустима в прогнозе,
  2. насколько точно можно измерить его текущее состояние,
  3. и шкала времени в зависимости от динамики системы.

Не существует общепринятого определения хаоса, но следующие
характеристики всегда описываются решениями хаотических систем:

  1. долговременное апериодическое поведение системы,
  2. чувствительность к начальным условиям (пожалуйста, взгляните на мою предыдущую статью, где я обсуждал аттрактор Лоренца),
  3. фрактальная структура

Странный аттрактор (хаотический аттрактор, фрактальный аттрактор) — это аттрактор, проявляющий чувствительность к начальным условиям. В следующем примере мы можем построить решение дифференциального уравнения на модели Лоренца, которая была открыта (модифицирована) Гуанронгом Ченом и Тецуши Уэта → (Мультискролл-аттрактор).

Динамика хаотической системы описывается следующим образом:

Численное решение можно изобразить следующим образом:

Следующий пример, где можно наблюдать хаотические явления, — схема Чуа. Схема демонстрирует множество интересных явлений, включая каскады с удвоением периода к хаосу, прерывистые пути к хаосу и квазипериодические пути к хаосу.

Динамика хаотической системы описывается следующим образом:

g(x) описывает электрический отклик нелинейного резистора,
и его форма зависит от конкретной конфигурации его компонентов.

Параметры a, b, c и d определяются конкретными значениями компонентов схемы.

Численное решение можно изобразить следующим образом:

Отто Э. Рёсслер построил следующую трехмерную
систему дифференциальных уравнений:

где a, b и c — все константы.

Численное решение можно изобразить следующим образом:

Вы можете видеть, что произойдет, если начальное условие только для x будет немного изменено.

Мы также можем вывести динамическую систему следующим образом:

и решить численно,

Далее мы можем смоделировать Гамильтонову систему ​​с двумя степенями
свободы.

Динамическую систему можно изобразить следующим образом:

В общем, только очень небольшое, но значительное подмножество множества гамильтоновых систем с двумя степенями свободы является полностью интегрируемым. Пути этих систем имеют четыре измерения, но, рисуя карты Пуанкаре, можно установить общую структуру. В отличие от неинтегрируемых систем, которые могут проявлять широкий спектр явлений, включая хаотическое поведение, известно, что полностью интегрируемые системы демонстрируют исключительно гладкое регулярное поведение во всех областях фазового пространства. После краткого объяснения интегрируемости мы определим гамильтоновы системы с двумя степенями свободы.

Численное решение выглядит следующим образом:

В нашем последнем примере мы рассмотрим маятник с периодическим движением, который можно изобразить следующим образом:

Динамическая система второго порядка может быть описана уравнением Дюффинга.

где в физических моделях k ≥ 0 — коэффициент демпфирования, β — жесткость, α — параметр нелинейной жесткости, x — положение массы, 𝛾 — амплитуда вынужденных колебаний, ω — частота приводного сила.

Численное решение можно представить следующим образом:

Спасибо, что прочитали.