Переменные решатели шага в Simulink

Variable-step solvers изменяйте размер шага во время симуляции, уменьшая размер шага, чтобы увеличить точность, когда состояния модели изменяются быстро, и увеличивая размер шага, чтобы избежать ненужных шагов, когда состояния модели изменяются медленно. Вычисление размера шага добавляет вычислительные накладные расходы на каждом шаге, но может уменьшить общее количество шагов и, следовательно, время симуляции, необходимое для поддержания заданного уровня точности для моделей с быстро изменяющимися или кусочно-непрерывными состояниями.

Когда вы устанавливаете элемент управления Type на панели Solver configuration на Variable-step, управление Solver позволяет вам выбрать один из решателей переменного шага. Как и в случае решателей с фиксированным шагом, набор решателей с переменным шагом содержит дискретный решатель и набор непрерывных решателей. Однако, в отличие от решателей с фиксированным шагом, размер шага изменяется динамически на основе локальной ошибки.

Выбор между двумя типами решателей переменного шага зависит от того, задают ли блоки в вашей модели состояния, и, если да, то тип состояний, которые они задают. Если ваша модель не задает никаких состояний или задает только дискретные состояния, выберите дискретный решатель. Если модель имеет непрерывные состояния, непрерывные решатели используют численное интегрирование, чтобы вычислить значения непрерывных состояний на следующем временном шаге.

Примечание

Если модель не имеет состояний или только дискретных состояний, Simulink® использует дискретный решатель, чтобы симулировать модель, даже если вы задаете непрерывный решатель.

Переменно-шаговый дискретный решатель

Используйте дискретный решатель с переменным шагом, когда ваша модель не содержит непрерывных состояний. Для таких моделей дискретный решатель с переменным шагом уменьшает размер шага в порядок, чтобы захватить события модели, такие как пересечения нулем, и увеличивает размер шага, когда возможно улучшить эффективность симуляции.

Модель, показанная на рисунке, содержит два сигнала дискретной синусоиды на 0,5 и 0,75 шаги расчета. На графиках ниже показаны сигналы в модели вместе с шагами решателя для дискретных и дискретных решателей с фиксированным шагом, соответственно. Вы можете увидеть, что решатель с переменным шагом принимает только шаги, необходимые для записи выходного сигнала от каждого блока. С другой стороны, решатель с фиксированным шагом должен будет моделировать с фиксированным размером шага - или основным шагом расчета - 0,25, чтобы записать все сигналы, таким образом, делая больше шагов в целом.

Непрерывные решатели с переменным шагом

Решатели с переменным шагом динамически изменяют размер шага во время симуляции. Каждый из этих решателей увеличивает или уменьшает размер шага с помощью локального управления ошибками для достижения заданных вами допусков. Вычисление размера шага на каждом временном шаге добавляет к вычислительным накладным расходам. Однако это может уменьшить общее количество шагов и время симуляции, необходимое для поддержания заданного уровня точности.

Можно далее классифицировать непрерывные решатели с переменным шагом как одношаговые или многоступенчатые, одноупорядоченные или переменные и явные или неявные. Смотрите One-Step Verson Multistep Continuous Solvers для получения дополнительной информации.

Непрерывные явные решатели с переменными шагами

Явные решатели с переменным шагом разработаны для нежестких задач. Simulink предоставляет четыре таких решателей:

  • ode45

  • ode23

  • ode113

  • odeN

Решатель ОДУОдношаговый методМногоступенчатый методПорядок точностиМетод
ode45X СредаРунге-Кутта, Дорманд-Принс (4,5) пара
ode23X НизкоРунге-Кутта (2,3) пара Богацки и Шемпине
ode113 XПеременная, от низкого до высокогоРеализация ПЭК Адамса-Башфорта-Моултона
odeNX Смотрите порядок точности в непрерывных явных решателях с фиксированным шагомСмотрите метод интегрирования в непрерывных явных решателях с фиксированным шагом

Решатель ОДУКогда использовать
ode45

В целом, ode45 решатель является лучшим, чтобы применить в качестве первой попытки для большинства задач. Решатель Runge-Kutta (4,5) является методом пятого порядка, который выполняет оценку ошибки четвертого порядка. Этот решатель также использует интерполяцию четвертого порядка, которая позволяет размещать события и сглаживать графики.

Если на ode45 является вычислительно медленной, задача может быть жесткой и, таким образом, требует неявного решателя.

ode113

Для проблем со строгими допусками ошибок или для вычислительно интенсивных задач решатель PECE Адамса-Башфорта-Молтона может быть более эффективным, чем ode45.

ode23

The ode23 может быть более эффективным, чем ode45 решатель с допусками на грубую ошибку и при наличии мягкой жесткости. Этот решатель обеспечивает точные решения путем применения кубической эрмитовой интерполяции к значениям и склонам, вычисленным в концах шага.

odeNThe odeN решатель использует неадаптивное интегрирование Рунге - Кутты, порядок которого определяется параметром Solver order. odeN использует фиксированный размер шага, заданный параметром Max step size, но размер шага может быть уменьшен, чтобы захватить определенные события решателя, такие как пересечения нулем и дискретные выборки хиты.

Примечание

Выберите odeN решатель, когда скорость симуляции важна, например, когда

  • Модель содержит много пересечений нулем и/или сбросов решателя

  • При профилировании модели Solver Profiler не обнаруживает никаких неудачных шагов

Непрерывные неявные решатели с переменным шагом

Если ваша задача жесткая, попробуйте использовать один из неявных решателей переменного шага:

  • ode15s

  • ode23s

  • ode23t

  • ode23tb

Решатель ОДУОдношаговый методМногоступенчатый методПорядок точностиМетод сброса решателяMax. ПорядокМетод
ode15s XПеременная, от низкой до среднейXXЧисленные формулы дифференцирования (NDFs)
ode23sX Низко  Розенброк второго порядка
ode23tX НизкоX Метод трапеций с использованием интерполяции
ode23tbX НизкоX TR-BDF2

Метод сброса решателя

Для ode15s, ode23t, и ode23tb раскрывающееся меню для Solver reset method появится в разделе Solver details на панели « Строения». Этот параметр управляет тем, как решатель обрабатывает сброс, вызванный, например, обнаружением пересечения нулем. Допустимые опции Fast и Robust. Fast указывает, что решатель не пересчитывает Jacobian для сброса решателя, тогда как Robust задает, что решатель делает. Следовательно, Fast установка является более быстрой в вычислительном отношении, но в некоторых случаях может использоваться небольшой размер шага. Чтобы протестировать такие случаи, запустите симуляцию с каждой настройкой и сравните результаты. Если различия в результатах нет, можно смело использовать Fast настройка и экономия времени. Если результаты значительно различаются, попробуйте уменьшить размер шага для быстрой симуляции.

Максимальный порядок

Для ode15s решатель, можно выбрать максимальный порядок числовых формул дифференцирования (NDF), которые применяет решатель. Начиная с ode15s использует формулы первого - пятого порядка, Maximum order параметр позволяет вам выбирать порядки 1-5. Для жесткой задачи можно хотеть начать с порядка 2.

Советы по выбору неявного решателя переменной-шага

В следующей таблице приведены советы по применению неявных решателей с переменным шагом. Для примера, сравнивающего поведение этих решателей, см. Исследование решателей переменной-шага с использованием жесткой модели.

Решатель ОДУСоветы о том, когда использовать
ode15s

ode15s является решателем переменного порядка, основанным на числовых формулах дифференцирования (NDF). NDF связаны, но более эффективны, чем формулы дифференцирования назад (BDF), которые также известны как метод Гира. The ode15s решатель численно генерирует матрицы Якобия. Если вы подозреваете, что проблема жесткая, или если ode45 сбой или был очень неэффективен, попробуйте ode15s. Как правило, начните с ограничения максимального порядка NDF до 2.

ode23s

ode23s основан на модифицированной формуле Розенбрка порядка 2. Поскольку это одношаговый решатель, он может быть более эффективным, чем ode15s при допусках на сырую нефть. Как ode15s, ode23s численно генерирует для вас матрицу Якобия. Однако он может решить определенные виды жестких задач, для которых ode15s не эффективен.

ode23t

The ode23t решатель является реализацией метода трапеций с помощью «свободной» интерполяции. Используйте этот решатель, если ваша модель только умеренно жесткая, и вам нужно решение без численного демпфирования. (Энергия не рассеивается, когда вы моделируете колебательное движение.)

ode23tb

ode23tb является реализацией TR-BDF2, неявной формулы Рунге-Кутты с двумя этапами. Первый этап является методом трапеций шагом, а второй этап использует формулу дифференцирования назад порядка 2. По конструкции метод использует одну и ту же матрицу итерации при оценке обоих этапов. Как ode23s, этот решатель может быть более эффективным, чем ode15s при допусках на сырую нефть.

Примечание

Для жесткой задачи решения могут изменяться на временной шкале, которая очень мала по сравнению с интервалом интегрирования, в то время как решение интереса изменяется на гораздо более длительной временной шкале. Методы, которые не предназначены для жестких задач, неэффективны на интервалах, где решение изменяется медленно, потому что эти методы используют временные шаги, достаточно маленькие, чтобы разрешить самое быстрое возможное изменение. Для получения дополнительной информации смотрите шемпин, L. F., Численное решение обыкновенных дифференциальных уравнений, Chapman & Hall, 1994.

Ошибка Допусков для решателей переменной-шага

Локальная ошибка

Решатели с переменным шагом используют стандартные методы управления, чтобы контролировать локальную ошибку на каждом временном шаге. В течение каждого временного шага решатели вычисляют значения состояния в конце шага и определяют локальную ошибку - предполагаемую ошибку этих значений состояния. Затем они сравнивают локальную ошибку с приемлемой ошибкой, которая является функцией как относительной погрешности (rtol), так и абсолютной погрешности (atol). Если локальная ошибка больше, чем допустимая ошибка для любого одного состояния, решатель уменьшает размер шага и повторяет попытку.

  • Relative tolerance измеряет ошибку относительно размера каждого состояния. Эта относительная погрешность представляет процент от значения состояния. Значение по умолчанию 1e-3 означает, что вычисленное состояние находится в пределах 0,1%.

  • Absolute tolerance - пороговое значение ошибки. Этот допуск представляет приемлемую ошибку, когда значение измеренного состояния приближается к нулю.

    Решатели требуют ошибки для iвторое состояние, ei, чтобы удовлетворить:

    eimax(rtol×|xi|,atoli).

Следующий рисунок показывает график состояния и областей, в которых относительная погрешность и абсолютная погрешность определяют приемлемую ошибку.

Абсолютные погрешности

Ваша модель имеет глобальную абсолютную погрешность, который можно задать на панели Решатель (Solver) диалогового окна Параметры конфигурации (Configuration Parameters). Этот допуск применяется ко всем состояниям в модели. Можно задать auto или действительный скаляр. Если вы задаете auto (по умолчанию), Simulink первоначально устанавливает абсолютную погрешность для каждого состояния на основе относительной погрешности. Если относительная погрешность больше 1e-3, abstol инициализируется в 1e-6. Однако для reltol меньше 1e-3, abstol для состояния инициализировано в reltol * 1e-3. Когда симуляция прогрессирует, абсолютная погрешность для каждого состояния сбрасывается до максимального значения, которое государство приняло до сих пор, умножает относительную погрешность для этого состояния. Таким образом, если состояние изменяется от 0 до 1 и reltol 1e-3, abstol инициализируется в 1e-6 и к концу симуляции также достигает 1e-3. Если состояние переходит от 0 до 1000, то abstol изменения на 1.

Теперь, если состояние изменяется с 0 на 1 и reltol устанавливается на 1e-4, затем abstol инициализируется в 1e-7 и к концу симуляции достигает значения 1e-4.

Если вычисленное начальное значение для абсолютной погрешности не подходит, можно самостоятельно определить соответствующее значение. Для определения соответствующего значения абсолютной погрешности может потребоваться выполнить симуляцию более одного раза. Можно также задать, должен ли абсолютная погрешность адаптироваться аналогично своему auto установка путем включения или отключения AutoScaleAbsTol параметр. Для получения дополнительной информации см. раздел Автоматическое масштабирование абсолютной погрешности.

Несколько блоков позволяют вам задать абсолютную погрешность значения для решения состояний модели, которые они вычисляют или которые определяют их выход:

Абсолютные погрешности, заданные для этих блоков, переопределяют глобальные настройки в диалоговом окне Параметры конфигурации (Configuration Parameters). Можно хотеть переопределить глобальный параметр, если, например, глобальный параметр не обеспечивает достаточное управление ошибками для всех состояний вашей модели, потому что они широко варьируются в величине. Можно задать абсолютную погрешность блока:

  • auto

  • 1 (аналогично auto)

  • positive scalar

  • real vector (имеющий размерность, равную количеству соответствующих непрерывных состояний в блоке)

Совет

Если вы принимаете решение задать абсолютную погрешность, имейте в виду, что слишком низкое значение заставляет решатель делать слишком много шагов вблизи значений почти нулевого состояния. В результате моделирование происходитленнее.

С другой стороны, если вы задаете слишком высокую абсолютную погрешность, ваши результаты могут быть неточными, поскольку одно или несколько непрерывных состояний в вашей модели приближаются к нулю.

После завершения моделирования можно проверить точность результатов, снизив абсолютную погрешность и снова запустив симуляцию. Если результаты этих двух симуляций удовлетворительно близки, то можно почувствовать уверенность в их точности.