Решение дифференциальных уравнений задержки (DDE) с постоянными задержками
sol = dde23(ddefun,lags,history,tspan)
sol = dde23(ddefun,lags,history,tspan,options)
| Дескриптор функции, вычисляющий правую сторону дифференциальных уравнений Функция должна иметь форму dydt = ddefun(t,y,Z) где |
| Вектор постоянных, положительных запаздываний |
| Определить
|
| Интервал интеграции от |
| Необязательный аргумент интеграции. Структура, создаваемая с помощью |
sol = dde23(ddefun,lags,history,tspan) интегрирует систему DDE
На интервале [t0, tf], где start1,..., startk - постоянные, положительные задержки и t0, tf. Входной аргумент ,ddefun, является дескриптором функции.
Параметризация функций объясняет, как предоставить дополнительные параметры функции ddefun, при необходимости.
dde23 возвращает решение в виде структуры sol. Использовать вспомогательную функцию deval и выходные данные sol для оценки решения в конкретных точках tint в интервале tspan = [t0,tf].
yint = deval(sol,tint)
Структура sol возвращено dde23 имеет следующие поля.
| Сетка, выбранная |
| Приближение к y (x) в точках сетки в |
| Приближение к y ′ (x) в точках сетки в |
| Имя решателя, |
sol = dde23(ddefun,lags,history,tspan,options) решает, как указано выше, с помощью свойств интеграции по умолчанию, замененных значениями в options, аргумент, созданный с помощью ddeset. Посмотрите ddeset и решение дифференциальных уравнений задержки для получения дополнительной информации.
Обычно используемыми опциями являются скалярные относительные допуски ошибок 'RelTol' (1e-3 по умолчанию) и вектор абсолютных допусков ошибок 'AbsTol' (все компоненты: 1e-6 по умолчанию).
Используйте 'Jumps' возможность решения проблем с разрывами в истории или решении. Задайте для этой опции вектор, содержащий местоположения разрывов в решении до t0 (история) или в коэффициентах уравнений при известных значениях t после t0.
Используйте 'Events' для указания функции, которая dde23 призывает найти, где исчезают функции g (t, y (t), y (t − the1),..., y (t − startk)). Эта функция должна иметь вид
[value,isterminal,direction] = events(t,y,Z)
и содержат функцию события для каждого события, подлежащего тестированию. Для kФункция события в events:
value(k) - значение kФункция «-е событие».
isterminal(k) = 1 если вы хотите, чтобы интеграция заканчивалась на нуле этой функции события и 0 в противном случае.
direction(k) = 0 если вы хотите dde23 для вычисления всех нулей этой функции события, +1 если нули только там, где увеличивается функция события, и -1 если нули только там, где функция события уменьшается.
При указании 'Events' опция и события обнаружены, структура вывода sol также включает поля:
| Вектор строк расположений всех событий, т.е. время исчезновения функции события |
| Матрица, столбцы которой являются значениями решения, соответствующими временам в |
| Вектор, содержащий индексы, указывающие, какое событие произошло в соответствующее время в |
Этот пример решает DDE на интервале [0, 5] с лагами 1 и 0,2. Функция ddex1de вычисляет дифференциальные уравнения задержки и ddex1hist вычисляет историю для t <= 0.
Примечание
Файл, ddex1.m, содержит полный код для этого примера. Для просмотра кода в редакторе введите edit ddex1 в командной строке. Чтобы запустить его, введите ddex1 в командной строке.
sol = dde23(@ddex1de,[1, 0.2],@ddex1hist,[0, 5]);
Этот код оценивает решение в 100 равноотстоящих точках в интервале [0,5]затем строит график результата.
tint = linspace(0,5); yint = deval(sol,tint); plot(tint,yint);
ddex1 показывает, как можно кодировать эту проблему с помощью локальных функций. Дополнительные примеры см. в разделе ddex2.
dde23 отслеживает разрывы и интегрируется с явной парой Рунге-Кутта (2,3) и интерполяцией ode23. Он использует итерацию для выполнения шагов дольше, чем задержки.
[1] Шампин, Л. Ф. и С. Томпсон, «Решение DDE в MATLAB», Прикладная числовая математика, том 37, 2001, стр. 441-458.
[2] Кьерзенка, Дж., Л. Ф. Шампин и С. Томпсон, «Решение дифференциальных уравнений задержки с dde23»