Решение нежестких дифференциальных уравнений — метод среднего порядка точности
[t,y] =
ode45(odefun,tspan,y0)
[t,y] =
ode45(odefun,tspan,y0,options)
[t,y,te,ye,ie]
= ode45(odefun,tspan,y0,options)
sol = ode45(___)
[
, где t
,y
] =
ode45(odefun
,tspan
,y0
)tspan = [t0 tf]
, интегрирует систему дифференциальных уравнений от t0
до tf
с начальными условиями y0
. Каждая строка в массиве решения y
соответствует значению, возвращенному в вектор-столбце t
.
Все решатели MATLAB® ODE могут решить системы уравнений формы , или проблемы, которые включают большую матрицу, . Решатели все использование подобные синтаксисы. Решатель ode23s
только может решить проблемы с большой матрицей, если большая матрица является постоянной. ode15s
и ode23t
могут решить проблемы с большой матрицей, которая сингулярна, известна как дифференциально-алгебраические уравнения (ДАУ). Задайте большую матрицу с помощью опции Mass
odeset
.
ode45
является универсальным решателем ОДУ и является первым решателем, который необходимо попробовать за большинство проблем. Однако, если проблема жестка или требует высокой точности, то существуют другие решатели ОДУ, которые могут лучше подходить для проблемы. Смотрите Выбирают ODE Solver для получения дополнительной информации.
[
также использует настройки интегрирования, заданные t
,y
] =
ode45(odefun
,tspan
,y0
,options
)options
, который является созданным использованием аргумента функции odeset
. Например, используйте AbsTol
и опции RelTol
, чтобы задать допуски абсолютной и относительной погрешности или опцию Mass
, чтобы обеспечить большую матрицу.
[
дополнительно находит, где функции (t, y), вызвал функции события, являются нулем. В выводе t
,y
,te
,ye
,ie
]
= ode45(odefun
,tspan
,y0
,options
)te
является временем события, ye
является решением во время события, и ie
является индексом инициированного события.
Для каждой функции события задайте, должно ли интегрирование остановиться в нуле и имеет ли направление нулевого пересечения значение. Сделайте это путем установки свойства 'Events'
на функцию, такую как myEventFcn
или @myEventFcn
, и создания соответствующей функции: [value
, isterminal
, direction
] = myEventFcn
(t
, y
). Для получения дополнительной информации смотрите Местоположение События ОДУ.
ode45
основан на явной формуле Рунге-Кутта (4,5), модификации Дорманда-Принца. Это - одношаговый решатель – в вычислении y(tn)
, этому нужно только решение в непосредственно предшествующем моменте времени, y(tn-1)
[1], [2].
[1] Dormand, J. R. and P. J. Prince, “A family of embedded Runge-Kutta formulae,” J. Comp. Appl. Math., Vol. 6, 1980, pp. 19–26.
[2] Шемпин, L. F. и М. В. Рейчелт, “Пакет ODE MATLAB”, SIAM Journal на Научных вычислениях, Издании 18, 1997, стр 1–22.