Решение ODE часто требует точной настройки параметров, корректировки допусков ошибок или передачи дополнительной информации решателю. В этом разделе показано, как задать опции и с какими дифференциальными решателями уравнений совместима каждая опция.
Используйте 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' для задания матрицы массы. Полный обзор файлов примеров и используемых ими параметров см. в разделе Обзор примеров и файлов ОДУ.