ODEMethod
, Stepsize
Числовая схема, используемая для того, чтобы решить ОДУ
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
ODEMethod , Stepsize | Дополнительный | Выражение MuPAD® |
Объекты | Значения по умолчанию |
---|---|
plot::Ode2d , plot::Ode3d |
|
plot::Streamlines2d |
|
ODEMethod = method
определяет числовую схему того, чтобы решить ОДУ. Параметр method
является именем, таким как EULER1
, RK4
, RKF78
и т.д.
Stepsize = h
устанавливает постоянный размер шага h, который используется, чтобы вычислить числовое решение.
Внутренне, plot::Ode2d
, plot::Ode3d
и plot::Streamlines2d
вызывают стандартный numeric::odesolve
для того, чтобы решить данный ОДУ численно. Метод, установленный атрибутом ODEMethod = method
и/или размер шага, установленный Stepsize = h
, передается numeric::odesolve
. Смотрите соответствующую страницу справки для полного списка всех доступных методов и для получения дальнейшей информации на размере шага.
Установка ODEMethod = ABM4
является исключением к вышеупомянутому: Это только доступно с plot::Streamlines2d
и заставляет график использовать быстрый интегратор корректора предиктора Адамса-Бэшфорта-Маултона четвертого порядка с фиксированным размером шага. Это игнорирует настройки RelativeError
и AbsoluteError
.
Мы решаем задачу с начальными значениями численно согласно классическому 4-му порядку схема Runge-Kutta RK4
с помощью постоянного размера шага 0.1:
f := (t, Y) -> [-Y[1]]: Y0 := [1]: timemesh:= [0, 1, 2, 3, 4, 5]: plot(plot::Ode2d(f, timemesh, Y0, ODEMethod = RK4, Stepsize = 0.1))
delete f, Y0, timemesh:
С настройками по умолчанию plot::Streamlines2d
не может построить векторное поле (который не является непрерывным Липшицом) удовлетворяющим способом:
plot(plot::Streamlines2d([1, surd(3,y)^2], x=-3..3, y=-2..2))
При помощи различного числового интегратора проблемы могут быть преодолены (за счет более длительного вычисления):
plot(plot::Streamlines2d([1, surd(3,y)^2], x=-3..3, y=-2..2, ODEMethod=RKF43, RelativeError=1e-3))