ОДУ#
Внешний вид блока в REPEAT VISION#
Блок ОДУ предназначен для численного решения систем обыкновенных дифференциальных уравнений (ОДУ), выраженных в форме Коши (относительно старшей производной): \(y" = f(t, y, y')\). Блок предоставляет универсальный инструментарий для моделирования динамических систем.
Ключевые характеристики и функции блока ОДУ:
Поддержка переменного шага интегрирования: Для контроля точности решения реализованы алгоритмы с адаптивным выбором шага. Интеграторы (например, DormandPrince853, LSODA) автоматически подбирают шаг интегрирования, чтобы обеспечить заданную пользователем точность (относительную и абсолютную). Это оптимально с точки зрения скорости и точности на разных участках решения.
Выбор интеграционной схемы: Блок предлагает набор многошаговых и одношаговых методов (например, Рунге-Кутты разных порядков, Адамса, LSODA), адаптированных для решения как нежестких, так и жестких систем. Это позволяет выбрать наиболее эффективный алгоритм для конкретной задачи.
Учёт событий (Discrete Events): Важной особенностью является возможность обработки дискретных событий, определяемых условием \(g(t, y) = 0\). Блок определяет момент наступления события, останавливает, позволяет изменить вектор состояния или продолжить расчет. Это критически важно для моделирования систем с разрывами (например, срабатывание клапана, столкновение тел) или для остановки интегрирования по достижению целевого состояния.
Гибкая настройка событий: Возможность выбора метода поиска момента наступления события для повышения точности и устойчивости расчета.
Контроль вычислений: Для предотвращения бесконечных циклов установлен лимит на количество вычислений правых частей ОДУ.
Поддержка написания условий и импорта модуля “Math.”: Блок поддерживает работу условных операторов (if-else) и имеет полный набор математических функций из модуля Math (например, Math.sin, Math.exp) для описания правых частей уравнений и условий событий.
Принцип работы:
Пользователь описывает систему ОДУ, реализуя функцию \(f(t, y)\).
Выбирается тип интегратора и настраиваются его параметры (точность, максимальный/минимальный шаг).
Запускается процесс интегрирования.
Важно
Несмотря на то, что внутренний решатель блока использует адаптивный шаг для гарантии точности расчетов “внутри себя”, весь проект выполняется в дискретном режиме. При увеличении шага расчёта всей модели, решателю ОДУ может потребоваться больше внутренних итераций, что потребует увеличения параметра Максимальное кол-во обращений к функции.
Интерфейс написания системы ОДУ имеет в общем 6 разделов:
В Инициализации указываются параметры, участвующие в расчете системы ОДУ, а также производится инициализация начальных условий ОДУ \(y[0] = x_1\), \(y'[0] = x_2\).
В Основном блоке пишутся уравнения, выраженные в форме Коши (относительно старшей производной): \(y(n) = f(t, y, y', …, y(n-1))\), а также пользовательские функции.
В Дополнительном блоке задаются действия, проводимые до и после интегрирования.
В Параметрах интегрирования производится выбор и настройка метода интегрирования: количество обращений к функции, величина шага и точность интегрирования.
В разделе Расширенное событие указывается условие-функция, которое при смене знака запускает событие из списка:
Action.RESET_DERIVATIVES– сброс значения производных;Action.RESET_STATE– переопределение значения вектора состояние через специальную функцию в разделе настроек;Action.STOP– остановить интегрирование вектора состояний на данном шаге;Action.CONTINUE– продолжить интегрирование состояний.
Важно
В Расширенных событиях при написании функций и событий применение команды return обязательно.
В Простых событиях достаточно написать функцию (без команды return) и выбрать действие в выпадающем списке.
В настройках события можно выбрать метод (Muller, Brent, Биссекция), которым решатель будет искать точный момент срабатывания функции-условия, и настроить количество допустимых итераций и точность метода.
1. Настройка блока#
Попасть в настройки можно двойным нажатием ЛКМ по блоку.
Рис. 1 Настройки блока#
Внутри блока открывается два основных окна:
Левое окно для переключения между системой дифференциальных уравнений и событиями;
Правое окно с панелью управления переменными.
Рис. 2 Левое окно#
Рис. 3 Правое окно#
Секция дифференциальных уравнений содержит следующие разделы:
Инициализация (см. рис. 1);
Основной блок (см. рис. 1);
Дополнительные блоки (см. рис. 4);
Рис. 4 Дополнительные блоки#
Рис. 5 Параметры интегрирования#
Примечание
Для раскрытия разделов Дополнительные блоки и Параметры интегрирования необходимо нажать по их названиям ЛКМ
Секция событий содержит следующие разделы:
Расширенное событие (см. рис. 6);
Простое событие (см. рис. 7).
Рис. 6 Расширенное событие#
Рис. 7 Простое событие#
Примечание
Для раскрытия разделов Расширенное событие и Простое событие необходимо нажать по их названиям ЛКМ
2. Свойства#
Нет
3. Входы и выходы#
Параметры |
Вход/Выход |
Описание |
Единицы измерения |
Тип порта |
|---|---|---|---|---|
input |
Вход |
– |
– |
Автоматика |
acceleration |
Выход |
– |
– |
Автоматика |
velocity |
Выход |
– |
– |
Автоматика |
displacement |
Выход |
– |
– |
Автоматика |
LowerBound |
Выход |
– |
– |
Автоматика |
Для того, чтобы посмотреть возможности подключения блока необходимо перейти на страницу Описание портов блоков
См. также
С примером использования данного блока можно ознакомиться в разделе Авиастроение практическое руководство Разработка математической модели парашютной посадки беспилотного летательного аппарата