Решение ОДУ часто требует подстройки параметров, корректировки допусков на ошибки или передачи дополнительной информации решателю. В этом разделе показано, как задать опции и с какими дифференциальными уравнениями решает каждая опция совместима.
Используйте odeset
функция для создания структуры опций, которая затем передается решателю в качестве четвертого входного параметра. Для примера, чтобы настроить относительные и абсолютные ошибки допусков:
opts = odeset('RelTol',1e-2,'AbsTol',1e-5); [t,y] = ode45(@odefun,tspan,y0,opts);
Если вы используете команду odeset
без входов, MATLAB® отображает список возможных значений для каждой опции со значениями по умолчанию, обозначенными фигурными скобками {}
.
odeget
функция запрашивает значение опции в существующей структуре, которую можно использовать для динамического изменения значений опций на основе условий. Для примера этот код определяет, Stats
ли установлено в
'on'
, и изменяет значение при необходимости:
if isempty(odeget(opts,'Stats')) odeset(opts,'Stats','on') end
Некоторые опции в odeset
являются обобщенными и совместимыми с любым решателем, в то время как другие являются специфичными для решателя. В этой таблице суммируется совместимость каждой опции с другими решателями.
Опция | ode45 | ode23 | ode113 | ode15s | ode23s | ode23t | ode23tb | ode15i |
---|---|---|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ | ✓* | — | ✓* | ✓* | — |
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓** |
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| — | — | — | ✓ | ✓ | ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| — | — | — | ✓ | — | ✓ | — | — |
| — | — | — | ✓ | — | — | — | ✓ |
* Используйте NonNegative
параметр с ode15s
, ode23t
, и ode23tb
только для тех задач, в которых отсутствует большая матрица.
* * Функция событий для ode15i
должен принять третий входной параметр для yp
.
MATLAB включает несколько примерных файлов, которые показывают, как использовать различные опции. Для примера введите edit ballode
чтобы увидеть пример, который использует 'Events'
для задания функции событий или edit batonode
чтобы увидеть пример, который использует 'Mass'
для задания большой матрицы. Полные сводные данные примеров файлов и опций, которые они используют, смотрите Сводных данных примеров и файлов ODE.