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