Этот пример показывает, как смоделировать популярную игрушку под названием «колыбель Ньютона», которая состоит из строки из семи одинаковых мячей, которые подвешены с общей высоты. В покое они устроены так, что просто касаются друг друга. Затем один или несколько мячи с одного конца поднимают из их положения покоя и отпускают.
Интересным последствием упругих столкновений между мячами является то, что мячи, которые высвобождаются, по-видимому, останавливаются, и равное количество мячей с другого конца освобождается (с почти той же энергией, что и входящие мячи). Мячи в середине вроде бы не двигаются, хотя и отвечают за перенос импульса с одного конца на другой.
Эта модель использует простую модель упругого столкновения, чтобы описать взаимодействия между мячами. График Stateflow ® использует локальные переменные, чтобы изобразить непрерывные состояния системы, а именно положение p
и скорость v
. Обратите внимание, что обе эти локальные переменные имеют метод Update как continuous
. Это позволяет вам ссылаться на их производные как p_dot
и v_dot
соответственно. Поскольку номинальная динамика всех мячей идентична, этот пример использует эти векторные назначения, чтобы представлять движение всех мячей:
p_dot = v; v_dot = -g/l*sin(p);
Обратите внимание, что p_dot
и v_dot
не являются локальными переменными графика. Они создаются автоматически из-за p
и v
определяются как непрерывные.
Модель использует простой цикл for-loop, чтобы обнаружить столкновения между мячами. В одномерной настройке график моделирует только столкновения между последовательными мячами с одним циклом for.
Реакция на столкновение также выражается просто. Каждое столкновение рассматривается как идеально упругое мгновенное столкновение. Положение и скорость обмениваются для каждого из мячей, участвующих в столкновении.
Симуляция этой модели поднимает простой пользовательский интерфейс, который показывает движение мячей.