Fixed-step solvers решает модель в интервалах постоянного времени с начала в конец симуляции. Размер интервала известен как размер шага. Можно задать размер шага или позволить решателю выбрать размер шага. Обычно меньшее размер шага увеличивает точность результатов, но также и увеличивает время, требуемое симулировать систему.
Фиксированный шаг дискретный решатель вычисляет время следующего шага симуляции путем добавления фиксированного размера шага в текущее время. Точность и отрезок времени получившейся симуляции зависит от размера шагов, сделанных симуляцией: чем меньший размер шага, тем более точны результаты всего лишь дольше, симуляция берет. По умолчанию Simulink® выбирает размер шага, или можно выбрать размер шага сами. Если вы выбираете настройку по умолчанию auto
, и если модель имеет дискретные шаги расчета, то Simulink устанавливает размер шага на основной шаг расчета модели. В противном случае, если никакие дискретные уровни не существуют, наборы Simulink, размер к результату деления различия между симуляцией запускается и времена остановки 50.
Решатели с непрерывным фиксированным шагом, как фиксированный шаг дискретный решатель, вычисляют следующее время симуляции путем добавления временного шага фиксированного размера в текущее время. Для каждого из этих шагов непрерывные решатели используют численное интегрирование, чтобы вычислить значения непрерывных состояний для модели. Эти значения вычисляются с помощью непрерывных состояний на предыдущем временном шаге и производных состояния в промежуточных точках (мелкие шаги) между током и предыдущим временным шагом.
Примечание
Simulink использует фиксированный шаг дискретный решатель для модели, которая не содержит состояний или только дискретных состояний, даже если вы задаете решатель с непрерывным фиксированным шагом для модели.
Simulink обеспечивает два типа решателей с непрерывным фиксированным шагом — явный и неявный.
Различие между этими двумя типами заключается в скорости и устойчивости. Неявный решатель требует большего количества расчета на шаг, чем явный решатель, но более устойчив. Поэтому неявный решатель фиксированного шага, который обеспечивает Simulink, более владеет мастерством решения жесткой системы, чем фиксированный шаг явные решатели. Для сравнения явных и неявных решателей смотрите Явный По сравнению с Неявными Непрерывными Решателями.
Явные решатели вычисляют значение состояния на следующем временном шаге как явная функция текущих значений и состояния и производной состояния. Фиксированный шаг явный решатель описывается математически как:
где
x является состоянием.
Dx является зависимой решателем функцией, которая оценивает производную состояния.
h является размером шага.
n указывает на шаг текущего времени.
Simulink обеспечивает набор фиксированного шага непрерывные явные решатели. Решатели отличаются по определенному методу численного интегрирования, что они используются для расчета производных состояния модели. Эта таблица приводит каждый решатель и метод интегрирования, который это использует. Таблица приводит решатели в порядке вычислительной сложности методов интегрирования, которые они используют от наименее комплексного (ode1
) к самому комплексному (ode8
).
Решатель | Метод интегрирования | Порядок точности |
---|---|---|
| Метод Эйлера | Сначала |
| Метод Хеуна | Второй |
| Формула Шемпина Богацков | Треть |
| Четвертый порядок формула (RK4) Рунге-Кутта | Четвертый |
| Dormand-принц (RK5) формула | Пятый |
| Формула Dormand-Prince RK8(7) | Восьмой |
Ни один из этих решателей не имеет механизм контроля ошибок. Поэтому точность и длительность симуляции зависят непосредственно от размера шагов, сделанных решателем. Когда вы уменьшаете размер шага, результаты становятся более точными, но симуляция занимает больше времени. Кроме того, для любого данного размера шага, чем выше порядок решателя, тем более точный результаты симуляции.
Если вы задаете тип решателя фиксированного шага для модели, то по умолчанию, Simulink выбирает FixedStepAuto
решатель. Автоматический решатель затем выбирает соответствующий решатель фиксированного шага, который может обработать и непрерывные и дискретные состояния с умеренным вычислительным усилием. Как с дискретным решателем, если модель имеет дискретные уровни (шаги расчета), то Simulink устанавливает размер шага на основной шаг расчета модели по умолчанию. Если модель не имеет никаких дискретных уровней, Simulink автоматически использует результат деления общей длительности симуляции 50. Следовательно, решатель получает шаг в каждом времени симуляции, в котором Simulink должен обновить дискретные состояния модели на уровне ее заданных частот дискретизации. Однако это не гарантирует, что решатель по умолчанию точно вычисляет непрерывные состояния модели. Поэтому вы, возможно, должны выбрать другой решатель, различный фиксированный размер шага, или и достигнуть приемлемой точности и приемлемого времени симуляции.
Неявный решатель вычисляет состояние на следующем временном шаге как неявная функция состояния на шаге текущего времени и производной состояния на следующем временном шаге, аналогичном описанному по следующему выражению.
Simulink предоставляет одному фиксированному шагу неявный решатель: ode14x
. Этот решатель использует комбинацию метода Ньютона и экстраполяции от текущего значения, чтобы вычислить значение состояния на следующем временном шаге. Можно указать, что количество итераций метода Ньютона и экстраполяции приказывает, чтобы решатель использовался для расчета следующего значения состояния модели. Смотрите размер Фиксированного шага (основной шаг расчета). Чем больше итераций и выше порядок экстраполяции, который вы выбираете, тем больше точность вы получаете. Однако вы одновременно создаете большую вычислительную нагрузку на размер шага.
Выберите решатель Фиксированного Шага