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