Символьное дифференцирование |
Top Previous Next |
Рассмотрим модель движения материальной точки массой При ненулевом начальном состоянии и отсутствии внешней силы материальная точка будет совершать затухающие гармонические колебания. Пусть нам теперь нужно решить «обратную» задачу: найти закон изменения внешней силы Рис.1 Особенность этой системы уравнений в том, что траектория Запустив такую модель, мы получим правильное решение с небольшим «всплеском» в начальной точке и сообщение о необходимости численного дифференцирования, которое и является источником этого «всплеска». Однако, хотя мы и добились искомого результата, для более сложных моделей лучше бы численного дифференцирования не использовать – оно отрицательно сказывается на скорости и точности моделирования. Альтернативой численному дифференцированию является символьное дифференцирование нужных уравнений. Откроем окно установок проекта и на странице «Общие» установим флажок «Использовать символьное дифференцирование» после чего снова запустим модель. Получим верную зависимость Рис.2 В отличие от инструментов на базе языка Modelica в AnyDynamics анализ и формирование текущей совокупной системы уравнений происходит не во время генерации кода выполняемой модели, а во время выполнения модели. Это является «расплатой» за возможность использовать карты состояний UML и полноценно моделировать гибридные системы и системы с переменной структурой. Поэтому в AnyDynamics на этапе генерации кода модели происходит формирование только своего рода «заготовок» для анализатора уравнений. В связи с этим не всегда удается во время выполнения модели найти подходящее символьное решение. В этом случае анализатор уравнений сообщает о невозможности использовать символьное дифференцирование и переходит к использованию численного дифференцирования. При установленном флаге «Использовать символьное дифференцирование» программный код модели несколько больше, поэтому по умолчанию этот флаг сброшен. |