Модель маятника как физический компонент
Маятник в полярных координатах: физический компонент в Engee
Реализация маятника в полярных координатах демонстрирует подход к моделированию механических систем через физические компоненты.
Описание модели
Модель 2D маятника (в плоскости движения) состоит из точечной массы , закрепленной на невесомом стержне длиной , который может свободно вращаться вокруг точки подвеса. На систему действуют:
-
Сила тяжести ;
-
Сила демпфирования, пропорциональная угловой скорости с коэффициентом ;
-
Реакция стержня (натяжение), автоматически учитываемая при использовании полярных координат (значительно усложняющая модель при моделировании в декартовых координатах).

Настройки массы, длины стержня и начального смещения передаются в компонент через маску блока Маятник в полярных координатах:
.png)
В полярных координатах состояние системы описывается углом отклонения и угловой скоростью . Уравнения движения имеют вид:
где:
-
— угол отклонения от вертикали (рад);
-
— угловая скорость (рад/с);
-
— масса маятника (кг);
-
— длина стержня (м);
-
— коэффициент демпфирования (кг/с);
-
— ускорение свободного падения (м/с²).
В файле pendulum_planar_polar_coord.ngpc приведен код этой системы на языке физического моделирования Engee. В отличие от алгоритмического вида решения, или от задания системы в конечно-разностной формы для численного интегрирования, язык физического моделирования позволяет наращивать физическое описание и включать эффекты, которые будут действовать на систему "со стороны выходных переменных" - например, добавить изменяющуюся инерцию массы или движение подвеса.
В блоке @equations в этом коде видно, как уравнения движения системы задаются через дифференциальные уравнения:
der(theta) ~ omega
m * l * der(omega) ~ -m * g * sin(theta) - l * d * omega
Код компонента должен лежать в одной из домашних директорий
Для успешной компиляции кода модели маятника, файл pendulum_planar_polar_coord.ngpc должен находиться в папке, находящейся среди путей поиска в системе (т.е. в одной из домашних папок). Значок папки содержащей компонент должен выглядеть таким образом: .
Запуск модели
Представим зависимость угла отклонения маятника от времени. Начальный угол составляет 90° (π/2 рад).
engee.open("pendulum_in_polar_coordinates.engee")
data = engee.run()
angle_array = data["Маятник в полярных координатах.Угол"]
gr()
plot( angle_array.time, angle_array.value, xlabel="Время, с", ylabel="Угол, град",
label = "Маятник в декартовых координатах", title="Моделирование движения маятника")
Заключение
Этот учебный пример призван проиллюстрировать подход физического моделирования, позволяющий помещать внутри блоков Engee механические системы с уравнениями движения и ограничениями.
