Динамическая система симулирована путем вычисления ее состояний на последовательных временных шагах по промежутку требуемого времени, использования информации, предоставленной моделью. Процесс вычисления последовательных состояний системы из ее модели известен как решение модели. Никакой отдельный метод решения модели не достаточен для всех систем. Соответственно, Simulink® обеспечивает набор программ, известных как решатели, каждый из которых воплощает конкретный подход к решению модели. Диалоговое окно Configuration Parameters позволяет вам выбирать решатель, подходящий лучше всего для вашей модели.
Можно выбрать решатели, обеспеченные Simulink на основе способа, которым они вычисляют размер шага: фиксированный шаг и переменный шаг.
Решатели фиксированного шага решают модель в интервалах постоянного времени с начала в конец симуляции. Размер интервала известен как размер шага. Можно задать размер шага или позволить решателю выбрать размер шага. Обычно уменьшение размера шага увеличивает точность результатов при увеличении времени, требуемого симулировать систему.
Решатели переменного шага варьируются размер шага во время симуляции. Они уменьшают размер шага, чтобы увеличить точность, когда состояния модели изменяются быстро и увеличивают размер шага, чтобы не делать ненужные шаги, когда состояния модели изменяются медленно. Вычисление размера шага добавляет к вычислительным издержкам на каждом шаге, но может сократить общее количество шагов, и следовательно время симуляции, требуемое обеспечить заданный уровень точности для моделей с быстрым изменением или кусочно-непрерывными состояниями.
Фиксированный шаг и решатели переменного шага вычисляют следующее время симуляции как сумму текущего времени симуляции и размера шага. Управление Type на панели настройки Solver позволяет вам выбирать тип решателя. С решателем фиксированного шага размер шага остается постоянным в течение симуляции. С решателем переменного шага размер шага может варьироваться от шага до шага, в зависимости от динамики модели. В частности, решатель переменного шага увеличивает или уменьшает размер шага, чтобы соответствовать ошибочным допускам, которые вы задаете.
Выбор между этими типами зависит от того, как вы планируете развернуть свою модель и динамику модели. Если вы планируете сгенерировать код из своей модели и запустить код по компьютерной системе в реальном времени, выбрать решатель фиксированного шага, чтобы симулировать модель. Вы не можете сопоставить размер переменного шага с часами реального времени.
Если вы не планируете развернуть свою модель как сгенерированный код, выбор между переменным шагом и решателем фиксированного шага зависит от динамики вашей модели. Решатель переменного шага может сократить время симуляции вашей модели значительно. Решатель переменного шага позволяет это сохранение, потому что для данного уровня точности решатель может динамически настроить размер шага по мере необходимости. Этот подход сокращает количество требуемых шагов. Решатель фиксированного шага должен использовать один размер шага в течение симуляции, на основе требований точности. Чтобы удовлетворить этим требованиям в течение симуляции, решатель фиксированного шага обычно требует небольшого шага.
ex_multirate
модель в качестве примера показывает, как решатель переменного шага может сократить время симуляции для многоскоростной дискретной модели.
Модель генерирует выходные параметры на двух различных уровнях: каждые 0,5 с и каждые 0,75 с. Чтобы получить оба выходных параметров, решатель фиксированного шага должен взять временной шаг каждые 0,25 с (основной шаг расчета для модели).
[0.0 0.25 0.5 0.75 1.0 1.25 1.5 ...]
В отличие от этого, решатель переменного шага должен получить шаг только, когда модель генерирует выход.
[0.0 0.5 0.75 1.0 1.5 ...]
Эта схема значительно сокращает количество временных шагов, требуемых симулировать модель.
Simulink обеспечивает и непрерывные и дискретные решатели.
Когда вы выбираете тип решателя, можно также выбрать определенный решатель. Оба набора решателей включают дискретные и непрерывные решатели. Дискретные и непрерывные решатели используют блоки модели, чтобы вычислить значения любых дискретных состояний. Блоки, которые задают дискретные состояния, ответственны за вычисление значений тех состояний на каждом временном шаге. Однако различающиеся дискретные решатели, непрерывные решатели используют численное интегрирование, чтобы вычислить непрерывные состояния, которые задают блоки. При выборе решателя определите сначала, использовать ли дискретный решатель или непрерывный решатель.
Если ваша модель не имеет никаких непрерывных состояний, то Simulink переключается или на фиксированный шаг дискретный решатель или на переменный шаг дискретный решатель. Если ваша модель имеет только непрерывные состояния или соединение непрерывных и дискретных состояний, выберите непрерывный решатель из остающегося выбора решателя на основе динамики вашей модели. В противном случае ошибка происходит.
Решатели Continuous используют численное интегрирование, чтобы вычислить непрерывные состояния модели на шаге текущего времени на основе состояний на предыдущих временных шагах и производных состояния. Непрерывные решатели используют отдельные блоки, чтобы вычислить значения дискретных состояний модели на каждом временном шаге.
Дискретные решатели существуют, в основном, чтобы решить чисто дискретные модели. Они вычисляют следующий шаг времени симуляции для модели и ничего иного. В выполнении этих расчетов они используют каждый блок в модели, чтобы обновить ее отдельные дискретные состояния. Они не вычисляют непрерывные состояния.
Библиотека решателя содержит два дискретных решателя: фиксированный шаг дискретный решатель и переменный шаг дискретный решатель. Решатель фиксированного шага по умолчанию выбирает размер шага и уровень симуляции достаточно быстро, чтобы отследить изменения состояния в самом быстром блоке в вашей модели. Решатель переменного шага настраивает размер шага симуляции, чтобы идти в ногу с фактическим уровнем изменений дискретного состояния в вашей модели. Эта корректировка может избежать ненужных шагов и сократить время симуляции для многоскоростных моделей. Смотрите Шаги расчета в Системах для получения дополнительной информации.
Примечание
Необходимо использовать непрерывный решатель, чтобы решить модель, которая содержит и непрерывные и дискретные состояния, потому что дискретные решатели не могут обработать непрерывные состояния. Если с другой стороны, вы выбираете непрерывный решатель для модели без состояний или дискретных состояний только, программное обеспечение Simulink использует дискретный решатель.
Вы представляете явную систему уравнением
Для любого данного значения x можно вычислить путем замены x в f(x) и оценки уравнения.
Уравнения формы
считаются неявными. Для любого данного значения , необходимо решить это уравнение, чтобы вычислить .
Линейно неявная система может быть представлена уравнением
M (x) называется большой матрицей и функция принуждения. Система становится линейно неявной, когда вы используете физические блоки моделирования в модели.
В то время как вы можете применить неявный или явный непрерывный решатель, для решения этих систем, неявные решатели специально разработаны для того, чтобы решить жесткие задачи. Явные решатели решают нежесткие задачи. Задача обыкновенного дифференциального уравнения, называется жесткой, если требуемое решение изменяется медленно, но существуют более близкие решения, которые изменяются быстро. В таком случае численный метод должен взять маленькие временные шаги, чтобы решить систему. Жесткость является проблемой эффективности. Чем более жесткая система, тем больше времени требуется явному решателю для выполнения вычислений. Жесткая система имеет как медленно, так и быстро непрерывно изменяющуюся динамику.
Когда по сравнению с явными решателями, неявные решатели обеспечивают большую устойчивость для колебательного поведения. Однако неявные решатели являются также в вычислительном отношении более дорогими. Они генерируют якобиевскую матрицу и решают набор алгебраических уравнений на каждом временном шаге с помощью подобного Ньютону метода. Чтобы уменьшать эти дополнительные расходы, неявные решатели предлагают параметр Solver Jacobian method, который позволяет вам улучшать производительность симуляции неявных решателей. Смотрите Выбирают Jacobian Method для Неявного Решателя для получения дополнительной информации. Неявные решатели более эффективны, чем явные решатели для решения линейно неявной системы.
Библиотека решателя Simulink обеспечивает оба многоступенчатых и решателей с одним шагом. Оценка решателей с одним шагом с помощью решения в непосредственно предшествующем моменте времени и значений производной в нескольких точках между tn и tn-1. Эти точки являются мелкими шагами.
Многоступенчатые решатели используют результаты на нескольких предыдущих временных шагах, чтобы вычислить текущее решение. Simulink обеспечивает один явный многоступенчатый решатель, ode113
, и один неявный многоступенчатый решатель, ode15s
. Оба - решатели переменного шага.
Это различие основано на количестве порядков что использование решателя, чтобы решить систему уравнения. Два решателя переменного порядка, ode15s
и ode113
, часть библиотеки решателя. Они используют несколько порядков решить систему уравнений. А именно, неявный, переменный шаг ode15s
решатель использует первый порядок посредством уравнений пятого порядка, в то время как явный, переменный шаг ode113
решатель использует первый порядок посредством уравнений тринадцатого порядка. Для ode15s
, можно ограничить самый высокий порядок, примененный через параметр Maximum Order. Для получения дополнительной информации смотрите Максимальный Порядок.
Обнаружение пересечения нулем | Модели Simulink | Фазы симуляции в динамических системах