24.3 Решатели, совместимые с Matlab ¶
Octave также предоставляет набор решателей для задач Коши обыкновенных дифференциальных уравнений (ОДУ), имеющих интерфейс, совместимый с MATLAB. Параметры для этого класса методов устанавливаются с помощью функций.
В настоящее время реализованы следующие решатели:
- Методы Рунге-Кутты
-
ode45 интегрирует систему нежестких ОДУ или дифференциально-алгебраических уравнений (ДАУ) первого порядка с помощью метода Дорманда-Принса высокого порядка с переменным шагом. Требует шести вычислений функции за один шаг интегрирования, но может делать более крупные шаги на гладких задачах, чем
ode23: потенциально обеспечивая лучшую эффективность при меньших допусках. - ode23 интегрирует систему нежестких ОДУ или (или ДАУ первого порядка). Использует метод Богацки-Шампина третьего порядка и адаптирует локальный шаг, чтобы удовлетворить заданному пользователем допуску. Решатель требует трех вычислений функции за один шаг интегрирования.
- ode23s интегрирует систему жестких ОДУ (или ДАУ первого порядка) с помощью модифицированного метода второго порядка Розенброка.
-
ode45 интегрирует систему нежестких ОДУ или дифференциально-алгебраических уравнений (ДАУ) первого порядка с помощью метода Дорманда-Принса высокого порядка с переменным шагом. Требует шести вычислений функции за один шаг интегрирования, но может делать более крупные шаги на гладких задачах, чем
- Многошаговые методы
- ode15s интегрирует систему жестких ОДУ (или ДАУ первого порядка) с использованием метода переменного шага и переменного порядка, основанного на формулах обратного разностного метода (BDF).
-
ode15i интегрирует систему полностью неявных ОДУ (или ДАУ первого порядка) с использованием того же метода переменного шага и переменного порядка, что и
ode15s. decic может использоваться для вычисления согласованных начальных условий дляode15i.
Подробная информация о решателях приведена в работе Л. Ф. Шампина и М. В. Рейхельта, MATLAB ODE Suite, SIAM Journal on Scientific Computing, том 18, 1997, стр. 1–22, DOI: https://doi.org/10.1137/S1064827594276424.
-
:
[t, y] =ode45(fcn, trange, init)¶ -
:
[t, y] =ode45(fcn, trange, init, ode_opt)¶ -
:
[t, y, te, ye, ie] =ode45(…)¶ -
:
solution =ode45(…)¶ -
: ode45
(…)¶ -
Решает систему обыкновенных дифференциальных уравнений (ОДУ) с использованием хорошо известного явного метода Дорманда-Принса 4-го порядка.
fcn — это указатель на функцию, встроенную функцию или строку, содержащую имя функции, определяющей ОДУ:
y' = f(t,y). Функция должна принимать два входных значения, где первое — это время t, а второе — столбец неизвестных y.trange задаёт временной интервал, на котором будет оцениваться ОДУ. Обычно это вектор из двух элементов, определяющий начальное и конечное время (
[tinit, tfinal]). Если элементов больше двух, то решение также будет вычислено в эти промежуточные моменты времени.По умолчанию
ode45использует адаптивный шаг времени с алгоритмомintegrate_adaptive. Допуск для вычисления шага времени можно изменить, используя параметры"RelTol"и"AbsTol".init содержит начальное значение неизвестных. Если это строка, то решение y будет матрицей, в которой каждый столбец представляет решение для соответствующего начального значения в init.
Необязательный четвёртый аргумент ode_opt задаёт параметры решателя ОДУ, отличные от значений по умолчанию. Это структура, сгенерированная
odeset.Функция обычно возвращает два выходных значения. Переменная t — это столбец, содержащий моменты времени, где было найдено решение. Выходной y — матрица, в которой каждый столбец относится к различной неизвестной величине задачи, а каждая строка соответствует времени в t.
Результат также может быть возвращен в виде структуры solution, которая имеет поле x, содержащее строку времен, где было вычислено решение, и поле y, содержащее матрицу решения, так что каждый столбец соответствует моменту времени в x. Используйте
fieldnames (solution)для просмотра других полей и дополнительной информации, возвращаемой функцией.Если не заданы выходные аргументы, и в ode_opt не указан
"OutputFcn", то"OutputFcn"устанавливается вodeplot, и результаты решателя отображаются сразу же.Если используется опция
"Events", то могут быть возвращены три дополнительных выхода. te содержит время, когда функция событий вернула ноль. ye содержит значение решения в момент времени te. ie содержит индекс, указывающий на то, какая функция событий была активирована в случае нескольких функций событий.Пример: Решение уравнения Ван дер Поля
fvdp = @(t,y) [y(2); (1 - y(1)^2) * y(2) - y(1)]; [t,y] = ode45 (fvdp, [0, 20], [2, 0]);
-
:
[t, y] =ode23(fcn, trange, init)¶ -
:
[t, y] =ode23(fcn, trange, init, ode_opt)¶ -
:
[t, y, te, ye, ie] =ode23(…)¶ -
:
solution =ode23(…)¶ -
: ode23
(…)¶ -
Решение системы обыкновенных дифференциальных уравнений (ОДУ) без жесткой связи с помощью известного явного метода Богацки-Шампина порядка 3.
fcn — это функция-обработчик, встроенная функция или строка, содержащая имя функции, определяющей ОДУ:
y' = f(t,y). Функция должна принимать два входных параметра, где первый — время t, а второй — столбец неизвестных y.trange задает временной интервал, на котором будет вычисляться ОДУ. Обычно это вектор из двух элементов, определяющий начальное и конечное время (
[tinit, tfinal]). Если элементов больше двух, решение также будет вычислено в эти промежуточные моменты времени.По умолчанию
ode23использует адаптивный шаг времени с алгоритмомintegrate_adaptive. Допуск для вычисления шага времени можно изменить, используя параметры"RelTol"и"AbsTol".init содержит начальное значение для неизвестных. Если это строка, то решение y будет матрицей, в которой каждый столбец — решение для соответствующего начального значения в init.
Необязательный четвертый аргумент ode_opt задает нестандартные параметры решателя ОДУ. Это структура, сгенерированная
odeset.Функция обычно возвращает два выходных значения. Переменная t — столбец и содержит времена, где было найдено решение. Выходное значение y — это матрица, в которой каждый столбец относится к разным неизвестным задачи, а каждая строка соответствует времени в t.
Выходные данные также могут быть возвращены как структура solution, которая имеет поле x, содержащее строковый вектор времени, где было вычислено решение, и поле y, содержащее матрицу решения, так что каждый столбец соответствует времени в x. Используйте
fieldnames (solution)для просмотра других полей и дополнительной информации, возвращаемой функцией.Если не указаны выходные аргументы и не задан
"OutputFcn"в ode_opt, то"OutputFcn"устанавливается вodeplotи результаты решателя отображаются немедленно.Если используется параметр
"Events", могут быть возвращены три дополнительных выходных значения. te содержит время, когда функция события вернула ноль. ye содержит значение решения в момент времени te. ie содержит индекс, указывающий, какая функция события была активирована в случае нескольких функций события.Пример: Решение уравнения Ван дер Поля
fvdp = @(t,y) [y(2); (1 - y(1)^2) * y(2) - y(1)]; [t,y] = ode23 (fvdp, [0, 20], [2, 0]);
Ссылка: Для определения этого метода см. https://en.wikipedia.org/wiki/List_of_Runge%E2%80%93Kutta_methods.
-
:
[t, y] =ode23s(fcn, trange, init)¶ -
:
[t, y] =ode23s(fcn, trange, init, ode_opt)¶ -
:
[t, y] =ode23s(…, par1, par2, …)¶ -
:
[t, y, te, ye, ie] =ode23s(…)¶ -
:
solution =ode23s(…)¶ -
Решение системы жестких обыкновенных дифференциальных уравнений (жесткие ОДУ) методом Розенброка порядка (2,3).
fcn — это функция-обработчик, встроенная функция или строка, содержащая имя функции, определяющей ОДУ:
M y' = f(t,y). Функция должна принимать два входных параметра, где первый — время t, а второй — столбец неизвестных y. M — постоянная матрица масс, невырожденная и, возможно, разреженная. Установите поле"Mass"в odeopts с помощью odeset для задания матрицы масс.trange задаёт временной интервал, на котором будет вычисляться ОДУ. Обычно это вектор из двух элементов, задающих начальное и конечное время (
[tinit, tfinal]). Если элементов больше двух, решение также будет вычислено в эти промежуточные моменты времени с использованием процедуры интерполяции того же порядка, что и у решателя.По умолчанию
ode23sиспользует адаптивный шаг времени с алгоритмомintegrate_adaptive. Допуск для вычисления шага времени можно изменить, используя параметры"RelTol"и"AbsTol".init содержит начальное значение для неизвестных. Если это строка, то решение y будет матрицей, в которой каждый столбец — решение для соответствующего начального значения в init.
Необязательный четвертый аргумент ode_opt задаёт нестандартные параметры решателя ОДУ. Это структура, сгенерированная
odeset.ode23sигнорирует следующие параметры:"BDF","InitialSlope","MassSingular","MStateDependence","MvPattern","MaxOrder","Non-negative".Функция обычно возвращает два выходных значения. Переменная t — столбец и содержит времена, где было найдено решение. Выходное значение y — это матрица, в которой каждый столбец относится к разным неизвестным задачи, а каждая строка соответствует времени в t. Если trange указывает промежуточные шаги времени, будут возвращены только они.
Выходные данные также могут быть возвращены как структура solution, которая имеет поле x, содержащее строковый вектор времени, где было вычислено решение, и поле y, содержащее матрицу решения, так что каждый столбец соответствует времени в x. Используйте
fieldnames (solution)для просмотра других полей и дополнительной информации.Если используется параметр
"Events", могут быть возвращены три дополнительных выходных значения. te содержит время, когда функция события вернула ноль. ye содержит значение решения в момент времени te. ie содержит индекс, указывающий, какая функция события была активирована в случае нескольких функций события.Пример: Решение жесткого уравнения Ван дер Поля
f = @(t,y) [y(2); 1000*(1 - y(1)^2) * y(2) - y(1)]; opt = odeset ('Mass', [1 0; 0 1], 'MaxStep', 1e-1); [vt, vy] = ode23s (f, [0 2000], [2 0], opt);
-
:
[t, y] =ode15s(fcn, trange, y0)¶ -
:
[t, y] =ode15s(fcn, trange, y0, ode_opt)¶ -
:
[t, y, te, ye, ie] =ode15s(…)¶ -
:
solution =ode15s(…)¶ -
: ode15s
(…)¶ -
Решить систему жестких обыкновенных дифференциальных уравнений (ОДУ) или жестких полуявных дифференциально-алгебраических уравнений (ДАУ) индекса 1.
ode15sиспользует метод переменного шага и переменного порядка БДФ (метод обратных разностей), порядок которого изменяется от 1 до 5.fcn — это дескриптор функции, встроенная функция или строка, содержащая имя функции, которая определяет ОДУ:
y' = f(t,y). Функция должна принимать два входных параметра, где первый — это время t, а второй — это вектор-столбец неизвестных y.trange задает временной интервал, на котором будет вычисляться ОДУ. Обычно это вектор из двух элементов, задающий начальное и конечное время (
[tinit, tfinal]). Если элементов больше двух, то решение будет также вычислено в этих промежуточных моментах времени.init содержит начальное значение для неизвестных. Если это вектор-строка, то решение y будет матрицей, в которой каждый столбец — это решение для соответствующего начального значения в init.
Необязательный четвертый аргумент ode_opt задает параметры решателя ОДУ, отличные от параметров по умолчанию. Это структура, созданная с помощью
odeset.Функция обычно возвращает два выходных значения. Переменная t представляет собой вектор-столбец и содержит моменты времени, в которые было найдено решение. Выходное значение y — это матрица, в которой каждый столбец относится к различной неизвестной величине задачи, а каждая строка соответствует моменту времени в t.
Выходное значение также может быть возвращено в виде структуры solution, которая имеет поле x, содержащее вектор-строку моментов времени, в которые было вычислено решение, и поле y, содержащее матрицу решения, так что каждый столбец соответствует моменту времени в x. Используйте
fieldnames (solution), чтобы увидеть другие поля и дополнительную информацию, которая возвращается.Если не запрашиваются выходные аргументы и в ode_opt не указан параметр
"OutputFcn", то параметр"OutputFcn"устанавливается вodeplot, и результаты решателя немедленно отображаются графически.При использовании параметра
"Events"могут быть возвращены три дополнительных выходных значения. te содержит время, когда функция события вернула нуль. ye содержит значение решения во время te. ie содержит индекс, указывающий, какая функция события была вызвана в случае нескольких функций события.Пример: Решение уравнений Робертсона:
function r = robertson_dae (t, y) r = [ -0.04*y(1) + 1e4*y(2)*y(3) 0.04*y(1) - 1e4*y(2)*y(3) - 3e7*y(2)^2 y(1) + y(2) + y(3) - 1 ]; endfunction opt = odeset ("Mass", [1 0 0; 0 1 0; 0 0 0], "MStateDependence", "none"); [t,y] = ode15s (@robertson_dae, [0, 1e3], [1; 0; 0], opt);
-
:
[t, y] =ode15i(fcn, trange, y0, yp0)¶ -
:
[t, y] =ode15i(fcn, trange, y0, yp0, ode_opt)¶ -
:
[t, y, te, ye, ie] =ode15i(…)¶ -
:
solution =ode15i(…)¶ -
: ode15i
(…)¶ -
Решить систему полностью неявных обыкновенных дифференциальных уравнений (ОДУ) или дифференциально-алгебраических уравнений (ДАУ) индекса 1.
ode15iиспользует метод переменного шага и переменного порядка БДФ (метод обратных разностей), порядок которого изменяется от 1 до 5.fcn — это дескриптор функции, встроенная функция или строка, содержащая имя функции, которая определяет ОДУ:
0 = f(t,y,yp). Функция должна принимать три входных параметра, где первый — это время t, второй — это значение функции y (вектор-столбец), а третий — это значение производной yp (вектор-столбец).trange задает временной интервал, на котором будет вычисляться ОДУ. Обычно это вектор из двух элементов, задающий начальное и конечное время (
[tinit, tfinal]). Если элементов больше двух, то решение будет также вычислено в этих промежуточных моментах времени.y0 и yp0 содержат начальные значения для неизвестных y и yp. Если они являются векторами-строками, то решение y будет матрицей, в которой каждый столбец — это решение для соответствующего начального значения в y0 и yp0.
y0 и yp0 должны быть согласованными начальными условиями, то есть должно выполняться условие
f(t,y0,yp0) = 0. Функцияdecicможет использоваться для вычисления согласованных начальных условий по заданным начальным приближениям.Необязательный пятый аргумент ode_opt задает параметры решателя ОДУ, отличные от параметров по умолчанию. Это структура, созданная с помощью
odeset.Функция обычно возвращает два выходных значения. Переменная t представляет собой вектор-столбец и содержит моменты времени, в которые было найдено решение. Выходное значение y — это матрица, в которой каждый столбец относится к различной неизвестной величине задачи, а каждая строка соответствует моменту времени в t.
Выходное значение также может быть возвращено в виде структуры solution, которая имеет поле x, содержащее вектор-строку моментов времени, в которые было вычислено решение, и поле y, содержащее матрицу решения, так что каждый столбец соответствует моменту времени в x. Используйте
fieldnames (solution), чтобы увидеть другие поля и дополнительную информацию, которая возвращается.Если не запрашиваются выходные аргументы и в ode_opt не указан параметр
"OutputFcn", то параметр"OutputFcn"устанавливается вodeplot, и результаты решателя немедленно отображаются графически.При использовании параметра
"Events"могут быть возвращены три дополнительных выходных значения. te содержит время, когда функция события вернула нуль. ye содержит значение решения во время te. ie содержит индекс, указывающий, какая функция события была вызвана в случае нескольких функций события.Пример: Решение уравнений Робертсона:
function r = robertson_dae (t, y, yp) r = [ -(yp(1) + 0.04*y(1) - 1e4*y(2)*y(3)) -(yp(2) - 0.04*y(1) + 1e4*y(2)*y(3) + 3e7*y(2)^2) y(1) + y(2) + y(3) - 1 ]; endfunction [t,y] = ode15i (@robertson_dae, [0, 1e3], [1; 0; 0], [-1e-4; 1e-4; 0]);
-
:
[y0_new, yp0_new] =decic(fcn, t0, y0, fixed_y0, yp0, fixed_yp0)¶ -
:
[y0_new, yp0_new] =decic(fcn, t0, y0, fixed_y0, yp0, fixed_yp0, options)¶ -
:
[y0_new, yp0_new, resnorm] =decic(…)¶ -
Вычислить согласованные начальные условия неявно заданного ДУ y0_new и yp0_new на основе начальных предположений y0 и yp0.
Максимально
length (y0)компонент между fixed_y0 и fixed_yp0 могут быть выбраны как фиксированные значения.fcn — это обработчик функции. Функция должна принимать три входных значения, где первым является время t, вторым — столбец неизвестных y, и третьим — столбец неизвестных yp.
t0 — начальное время, такое что
fcn(t0, y0_new, yp0_new) = 0, заданное как скаляр.y0 — вектор, используемый в качестве начального предположения для y.
fixed_y0 — вектор, определяющий компоненты y0 для сохранения постоянными. Выберите максимально
length (y0)компонент между fixed_y0 и fixed_yp0 как фиксированные значения. Установите компонент fixed_y0(i) в 1, если хотите зафиксировать значение y0(i). Установите компонент fixed_y0(i) в 0, если хотите позволить значению y0(i) изменяться.yp0 — вектор, используемый в качестве начального предположения для yp.
fixed_yp0 — вектор, определяющий компоненты yp0 для сохранения постоянными. Выберите максимально
length (yp0)компонент между fixed_y0 и fixed_yp0 как фиксированные значения. Установите компонент fixed_yp0(i) в 1, если хотите зафиксировать значение yp0(i). Установите компонент fixed_yp0(i) в 0, если хотите позволить значению yp0(i) изменяться.Необязательный седьмой аргумент options — это массив структур. Используйте
odesetдля генерации этой структуры. Соответствующие параметры —RelTolиAbsTol, которые задают пороговые значения ошибок, используемые для вычисления начальных условий.Функция обычно возвращает два результата. Переменная y0_new — это столбец, содержащий согласованное начальное значение y. Результат yp0_new — это столбец, содержащий согласованное начальное значение yp.
Необязательный третий результат resnorm — это норма вектора остатков. Если resnorm невелика,
decicуспешно вычислил начальные условия. Если значение resnorm велико, используйтеRelTolиAbsTolдля его корректировки.Пример: Вычислить начальные условия для уравнений Робертсона:
function r = robertson_dae (t, y, yp) r = [ -(yp(1) + 0.04*y(1) - 1e4*y(2)*y(3)) -(yp(2) - 0.04*y(1) + 1e4*y(2)*y(3) + 3e7*y(2)^2) y(1) + y(2) + y(3) - 1 ]; endfunction [y0_new,yp0_new] = decic (@robertson_dae, 0, [1; 0; 0], [1; 1; 0], [-1e-4; 1; 0], [0; 0; 0]);
-
:
odestruct =odeset()¶ -
:
odestruct =odeset("field1", value1, "field2", value2, …)¶ -
:
odestruct =odeset(oldstruct, "field1", value1, "field2", value2, …)¶ -
:
odestruct =odeset(oldstruct, newstruct)¶ -
: odeset
()¶ -
Создать или изменить структуру параметров ДУ.
При вызове без входных аргументов и с одним выходным аргументом возвращает новую структуру параметров ДУ, в которой все возможные поля инициализированы своими значениями по умолчанию. Если выходной аргумент не указан, отображается список распространенных параметров решателя ДУ вместе со значениями по умолчанию.
При вызове с парами имя-значение "field1", "value1", "field2", "value2", … возвращает новую структуру параметров ДУ со всеми распространенными полями параметров, инициализированными, и устанавливает значения полей "field1", "field2", … на значения value1, value2, ….
При вызове со структурой в качестве входного аргумента oldstruct перезаписывает значения параметров "field1", "field2", … новыми значениями value1, value2, … и возвращает измененную структуру.
При вызове с двумя входными структурами параметров ДУ oldstruct и newstruct перезаписывает все значения из структуры oldstruct новыми значениями из структуры newstruct. Пустые значения в newstruct не перезапишут значения в oldstruct.
Наиболее часто используемые параметры ДУ, которым
odesetвсегда присваивается значение, следующие:-
AbsTol: положительный скаляр | вектор, по умолчанию1e-6 -
Абсолютная погрешность.
-
BDF: {"off"} |"on" -
Использовать формулы BDF в неявных многошаговых методах. Примечание: Этот параметр пока не реализован.
-
Events: function_handle -
Функция события. Функция события должна иметь вид
[value, isterminal, direction] = my_events_f (t, y) -
InitialSlope: вектор -
Согласованный вектор начального наклона для решателей ДУ.
-
InitialStep: положительный скаляр -
Начальный шаг по времени.
-
Jacobian: матрица | function_handle -
Матрица Якоби, заданная как постоянная матрица или как функция от времени и состояния.
-
JConstant: {"off"} |"on" -
Указать, является ли матрица Якоби постоянной матрицей или зависит от состояния.
-
JPattern: разреженная матрица -
Если матрица Якоби разреженная и не постоянная, но сохраняет постоянную структуру разреженности, укажите структуру разреженности.
-
Mass: матрица | function_handle -
Матрица масс, заданная как постоянная матрица или как функция от времени и состояния.
-
MassSingular: {"maybe"} |"yes"|"on" -
Указать, является ли матрица масс сингулярной.
-
MaxOrder: {5} |4|3|2|1 -
Максимальный порядок формулы.
-
MaxStep: положительный скаляр -
Максимальное значение шага по времени.
-
MStateDependence: {"weak"} |"none"|"strong" -
Указать, зависит ли матрица масс от состояния или только от времени.
-
MvPattern: разреженная матрица -
Если матрица масс разреженная и не постоянная, но сохраняет постоянную структуру разреженности, укажите структуру разреженности. Примечание: Этот параметр пока не реализован.
-
NonNegative: скаляр | вектор -
Укажите элементы вектора состояния, которые ожидаются оставаться неотрицательными во время моделирования.
-
NormControl: {"off"} |"on" -
Управлять относительной ошибкой относительно 2-нормы решения, а не его абсолютного значения.
-
OutputFcn: function_handle -
Функция для мониторинга состояния во время моделирования. Форму функции см. в
odeplot. -
OutputSel: скаляр | вектор -
Индексы элементов вектора состояния, которые будут переданы функции мониторинга вывода.
-
Refine: положительный скаляр -
Укажите, должен ли вывод возвращаться только в конце каждого шага по времени или также в промежуточные моменты времени. Значение должно быть скаляром, указывающим количество равноотстоящих точек во времени в каждом шаге, в которых возвращается вывод.
-
RelTol: положительный скаляр -
Относительная погрешность.
-
Stats: {"off"} |"on" -
Печать статистики решателя после моделирования.
-
Vectorized: {"off"} |"on" -
Укажите, можно ли
odefcnпередавать несколько значений состояния сразу.
Имена полей, которые не указаны в списке выше, также принимаются и добавляются в результирующую структуру.
См. также: odeget.
-
-
:
val =odeget(ode_opt, field)¶ -
:
val =odeget(ode_opt, field, default)¶ -
Получение значения свойства field в структуре опций ODE ode_opt.
Если вызывается с двумя входными аргументами, и первый входной аргумент ode_opt является структурой опций ODE, а второй входной аргумент field — строкой, задающей имя опции, то возвращается значение опции val, соответствующее field из ode_opt.
Если вызывается с необязательным третьим входным аргументом, и field не задано в структуре ode_opt, то возвращается значение по умолчанию default.
См. также: odeset.
-
:
stop_solve =odeplot(t, y, flag)¶ -
Открывает новое окно фигуры и строит график решения задачи ODE на каждом шаге интегрирования.
Типы и значения входных параметров t и y зависят от входного параметра flag, который имеет тип строки. Допустимые значения flag:
"init"-
Входной параметр t должен быть столбцом длины 2 с начальным и конечным шагом времени (
[tfirst tlast]. Входной параметр y содержит начальные условия для задачи ODE (y0). ""-
Входной параметр t должен быть скалярным типом double или вектором, задающим время(а), для которого было вычислено решение в входном параметре y.
"done"Входные параметры должны быть пустыми, но игнорируются, если они присутствуют.
odeplotвсегда возвращает false, т.е. не останавливает решатель ODE.Пример: решение анонимной реализации уравнения
"Van der Pol"и отображение результатов во время решения.fvdp = @(t,y) [y(2); (1 - y(1)^2) * y(2) - y(1)]; opt = odeset ("OutputFcn", @odeplot, "RelTol", 1e-6); sol = ode45 (fvdp, [0 20], [2 0], opt);Дополнительная информация: Эта функция вызывается функцией решателя ODE, если она была указана в свойстве
"OutputFcn"структуры опций, созданной с помощьюodeset. Решатель ODE сначала вызовет функцию с синтаксисомodeplot ([tfirst, tlast], y0, "init"). Функция инициализирует внутренние переменные, создаёт новое окно фигуры и устанавливает пределы оси x графика. Впоследствии на каждом шаге интегрирования решатель ODE вызываетodeplot (t, y, []). По окончании решения решатель ODE вызываетodeplot ([], [], "done"), чтобы odeplot смог выполнить необходимые действия по очистке.
© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.2.0/Matlab_002dcompatible-solvers.html