В модели Simulink® происходит algebraic loop, когда цикл сигнала существует только с прямыми проходными блоками в цикле. Direct feedthrough означает, что Simulink нужно значение входного сигнала блока, чтобы вычислить его вывод на шаге текущего времени. Такой цикл сигнала создает круговую зависимость блока выходные параметры и вводит в тот же такт. Это приводит к алгебраическому уравнению, для которого нужно решение в каждый такт, добавляя вычислительную стоимость для симуляции.
Некоторые примеры блоков с прямыми проходными входными параметрами:
Пространство состояний, когда коэффициент матрицы D является ненулевым
Передайте Fcn, когда числитель и знаменатель будут иметь тот же порядок
Нулевой полюсный, когда блок имеет столько же нулей сколько полюса
Непрямые проходные блоки поддерживают Переменную состояния. Двумя примерами является Интегратор и Единичная задержка.
Чтобы определить, имеет ли блок прямое сквозное соединение, считайте раздел Characteristics страницы с описанием блока.
Данные показывают пример алгебраического цикла. Блок Sum является алгебраической переменной x a, которая ограничивается равняться первому входу u минус x a (например, x a = u – x a).
Решением этого простого цикла является x a = u/2.
Simulink содержит комплект числовых решателей для симуляции ordinary differential equations (ODEs), которые являются системами уравнений, которые можно записать как
где x является вектором состояния, и t является независимой переменной времени.
Некоторые системы уравнений содержат дополнительные ограничения, которые включают независимую переменную и вектор состояния, но не производную вектора состояния. Такие системы называются differential algebraic equations (DAEs),
Термин algebraic относится к уравнениям, которые не включают производных. Можно выразить ДАУ, которые возникают в разработке в полуявной форме
где:
f и g могут быть вектор-функциями.
Первое уравнение является дифференциальным уравнением.
Второе уравнение является алгебраическим уравнением.
Вектором дифференциальных переменных является x.
Вектором алгебраических переменных является x a.
В моделях Simulink алгебраические циклы являются алгебраическими ограничениями. Модели с алгебраическими циклами задают систему дифференциальных алгебраических уравнений. Simulink решает алгебраические уравнения (алгебраический цикл) численно для x a на каждом шаге решателя ОДУ.
Модель в фигуре эквивалентна этой системе уравнений в полуявной форме:
На каждом шаге решателя ОДУ алгебраический решатель цикла должен решить алгебраическое ограничение для x a прежде, чем вычислить производную .
Алгебраические ограничения:
Происходите при моделировании физических систем, часто из-за законов сохранения, таких как сохранение массы и энергии
Происходите, когда вы выберете конкретную систему координат для модели
Справка налагает конструктивные ограничения на отклики системы в динамической системе
Используйте Simscape™ для образцовых систем, которые охватывают механическое устройство, электрические, гидравлические, и другие физические области как физические сети. Simscape создает ДАУ, которые характеризуют поведение модели. Программное обеспечение интегрирует эти уравнения с остальной частью модели и затем решает ДАУ непосредственно. Simulink решает переменные для компонентов в различных физических доменах одновременно, избегая проблем с алгебраическими циклами.
Искусственный алгебраический цикл происходит, когда атомарная подсистема или блок Model заставляют Simulink обнаруживать алгебраический цикл, даже при том, что содержимое подсистемы не содержит прямое сквозное соединение от входа до вывода. Когда вы создаете атомарную подсистему, все блоки Inport являются прямым сквозным соединением, приводящим к алгебраическому циклу.
Запустите с включенной модели, которая представляет простое пропорциональное управление объекта, описанного
который может быть переписан в форме пространства состояний как
Система не имеет ни алгебраических переменных, ни прямого сквозного соединения и не содержит алгебраический цикл.
Измените модель, как описано в следующих шагах:
Заключите блоки Контроллера и Объекта в подсистему
В диалоговом окне подсистемы выберите Treat как атомарный модуль, чтобы сделать подсистему атомарной
В панели Диагностики Образцовые Параметры конфигурации, установленные Алгебраический параметр Цикла на error
При симуляции этой модели происходит алгебраический цикл, потому что подсистема является прямым сквозным соединением, даже при том, что путь в атомарной подсистеме не является прямым сквозным соединением. Симуляция останавливается с алгебраической ошибкой цикла.
Когда модель содержит алгебраический цикл, Simulink использует нелинейный решатель на каждом временном шаге, чтобы решить алгебраический цикл. Решатель выполняет итерации, чтобы определить решение алгебраического ограничения, если существует тот. В результате модели с алгебраическими циклами могут запускаться более медленно, чем модели без алгебраических циклов.
Simulink использует алгоритм области доверия резкого искривления, чтобы решить алгебраические циклы. Используемый допуск меньше, чем решатель ОДУ Reltol
и Abstol
. Это вызвано тем, что Simulink использует “явный метод ОДУ”, чтобы решить Индексный 1 дифференциал алгебраические уравнения (ДАУ).
Для алгебраического решателя цикла, чтобы работать,
Должен быть один блок, где решатель цикла может повредить цикл и попытаться решить цикл.
Модель должна иметь действительные двойные сигналы.
Базовое алгебраическое ограничение должно быть сглаженной функцией
Например, предположите, что ваша модель имеет блок Sum с двумя входными параметрами — одно дополнение, другое отнимающее. Если вы питаете вывод блока Sum к одним из входных параметров, вы создаете алгебраический цикл, где все блоки включают прямое сквозное соединение.
Блок Sum не может вычислить вывод, не зная вход. Simulink обнаруживает алгебраический цикл, и алгебраический решатель цикла решает цикл с помощью итерационного цикла. В примере блока Sum программное обеспечение вычисляет правильный результат этот путь:
x a (t) = u (t) / 2. | (1) |
Алгебраический решатель цикла использует основанный на градиенте метод поиска, который требует непрерывных первых производных алгебраического ограничения, которые соответствуют алгебраическому циклу. В результате, если алгебраический цикл содержит разрывы, алгебраический решатель цикла может перестать работать.
Для получения дополнительной информации см. Решение индексных 1 ДАУ в MATLAB и Simulink []1
Simulink алгебраический решатель цикла использует один из двух алгоритмов, чтобы решить алгебраические циклы:
Доверительная область
Поиск строки
По умолчанию алгебраический решатель цикла использует алгоритм доверительной области.
Если алгебраический решатель цикла не может решить алгебраический цикл с алгоритмом доверительной области, попытайтесь моделировать модель с помощью алгоритма поиска строки.
Переключаться на алгоритм поиска строки, в командной строке MATLAB®, введите:
set_param(model_name, 'AlgebraicLoopSolver', 'LineSearch');
Переключаться назад на алгоритм доверительной области, в командной строке MATLAB, введите:
set_param(model_name, 'AlgebraicLoopSolver', 'TrustRegion');
Для получения дополнительной информации см.:
Шемпин и nleqn.m код Рейчелта
Программа HYBRD1 Фортрана в Руководство пользователя для MINPACK-1 []2
Пауэлл “Стандартная подпрограмма Фортрана для решения систем в нелинейных уравнениях”, в Численных методах для Нелинейных Алгебраических уравнений [3]
Методы доверительной области для нелинейной минимизации (Optimization Toolbox).
Поиск строки (Optimization Toolbox).
Алгебраическое решение цикла является итеративным процессом. Алгебраический решатель цикла Simulink успешен, только если алгебраический цикл сходится к определенному ответу. Когда цикл не удается сходиться или сходится слишком медленно, выходы симуляции с ошибкой.
Алгебраический решатель цикла не может решить алгебраические циклы, которые содержат любое следующее:
Блоки с выходными параметрами с дискретным знаком
Блоки с недвойными или комплексными выходами
Разрывы
Графики Stateflow®
Если ваша модель содержит алгебраический цикл:
Вы не можете сгенерировать код для модели.
Simulink алгебраический решатель цикла не может смочь решить алгебраический цикл.
В то время как Simulink пытается решить алгебраический цикл, симуляция может медленно выполняться.
Для большинства моделей алгебраический решатель цикла является в вычислительном отношении дорогим, впервые продвигаются. Simulink решает последующие временные шаги быстро, потому что хорошая отправная точка для x a доступна от предыдущего временного шага.
Алгебраическое ограничение | Пространство состояний дескриптора | Решатели | Обнаружение пересечения нулем
[1] Шемпин, Лоуренс Ф., M.W.Reichelt и J.A.Kierzenka”. Решение индексных 1 ДАУ в MATLAB и Simulink”. Сиамский анализ. Vol.18, № 3,1999, pp.538-552.
[2] Больше, J.J., B.S.Garbow и K.E.Hillstrom. Руководство пользователя для MINPACK-1. Аргонн, Национальная лаборатория IL:Argonne, 1980.
[3] Рабиновиц, Филип, Численные методы редактора для Нелинейных Алгебраических уравнений, Нью-Йорка: Гордон и Научные Издатели Нарушения, 1970.