Найти тему
Nuances of programming

Создание собственной симуляции активной материи на Python

Оглавление

Источник: Nuances of Programming

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

Сопровождающий код Python на github .

Для начала посмотрите, как выглядит симуляция при запуске:

-2

Модель Вичека для поведения стаи

Разберём известную минимальную модель активной материи  —  модель Вичека (1995 г.). Несмотря на простоту модели, она отображает общие свойства роевого поведения.

Модель состоит из N движущихся частиц, индексируемых на i=1,…, N. У каждой частицы есть угол направления Θ , по которому она движется. Все они двигаются с одинаковой скоростью v ₀. Частицы взаимодействуют друг с другом внутри радиуса взаимодействия R, в результате чего изменяют своё направление (угол).

-3

На каждой фазе положении rᵢ каждой частицы i обновляется следующем образом:

-4

В соответствии со скоростью частицы vᵢ :

-5

Динамичность модели Вичека зависит от того, как сменяются углы. А их смена происходит согласно следующему правилу:

-6

Где первый член  —  этосредний угол направлениявсех соседей частицы i внутри R (включая саму частицу). А второй ηᵢ  —  это случайное отклонение, полученное в результате равномерного распределения [-η/2,η/2 ].

Код симуляции

Эта модель настолько проста, что весь Python код можно изложить в одном блоке, как приведено ниже. Для вычисления среднего угла мы сложили все соседние векторы и использовали функцию numpy: arctan2, чтобы вернуть значение угла в правильном квадранте. Также мы взяли L как размер периодической области.

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

При запуске кода можно посмотреть на симуляцию в реальном времени, благодаря фигурам, изображающим положение частиц после 200 фаз:

-7

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

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

Существует множество дополнений к модели Вичека и к другим моделям активной материи. Но об этом не в этой статье.

Другой пример активной материи  —  это скопление бактерий на микроскопическом уровне:

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

Читайте также:

Читайте нас в Telegram , VK

Перевод статьи Philip Mocz : Create Your Own Active Matter Simulation (With Python)