Решение дифференциальных уравнений задержки (DDE) с общими задержками
sol = ddesd(ddefun,delays,history,tspan)
sol = ddesd(ddefun,delays,history,tspan,options)
| Дескриптор функции, который оценивает правую сторону дифференциальных уравнений y ′ ( t) = f (t, y (t), y (d (1),..., y (d (k))). Функция должна иметь форму dydt = ddefun(t,y,Z) где |
| Дескриптор функции, возвращающий вектор столбца задержек d (j). Задержки могут зависеть как от t, так и от y (t ). Если все функции задержки имеют вид d (j ) = t - startj, можно задать аргумент |
| Определить
|
| Интервал интеграции от |
| Необязательный аргумент интеграции. Структура, создаваемая с помощью |
sol = ddesd(ddefun,delays,history,tspan) интегрирует систему DDE
., y (d (k)))
в интервале [t0, tf], где задержки d (j) могут зависеть как от t, так и от y (t), и t0 < tf. Исходные данныеddefun и delays являются дескрипторами функций. Дополнительные сведения см. в разделе Создание дескриптора функции.
Параметризация функций объясняет, как предоставить дополнительные параметры функциям ddefun, delays, и history, при необходимости.
ddesd возвращает решение в виде структуры sol. Использовать вспомогательную функцию deval и выходные данные sol для оценки решения в конкретных точках tint в интервале tspan = [t0,tf].
yint = deval(sol,tint)
Структура sol возвращено ddesd имеет следующие поля.
| Сетка, выбранная |
| Приближение к y (x) в точках сетки в |
| Приближение к y ′ (x) в точках сетки в |
| Имя решателя, |
sol = ddesd(ddefun,delays,history,tspan,options) решает, как указано выше, с помощью свойств интеграции по умолчанию, замененных значениями в options, аргумент, созданный с помощью ddeset. Посмотрите ddeset и решение дифференциальных уравнений задержки для получения дополнительной информации.
Обычно используемыми опциями являются скалярные относительные допуски ошибок 'RelTol' (1e-3 по умолчанию) и вектор абсолютных допусков ошибок 'AbsTol' (все компоненты: 1e-6 по умолчанию).
Используйте 'Events' для указания функции, которая ddesd призывает найти, где исчезают функции g (t, y (t), y (d (1)),..., y (d (k))). Эта функция должна иметь вид
[value,isterminal,direction] = events(t,y,Z)
и содержат функцию события для каждого события, подлежащего тестированию. Для kФункция события в events:
value(k) - значение kФункция «-е событие».
isterminal(k) = 1 если вы хотите, чтобы интеграция заканчивалась на нуле этой функции события и 0 в противном случае.
direction(k) = 0 если вы хотите ddesd для вычисления всех нулей этой функции события, +1 если нули только там, где увеличивается функция события, и -1 если нули только там, где функция события уменьшается.
При указании 'Events' опция и события обнаружены, структура вывода sol также включает поля:
| Вектор строк расположений всех событий, т.е. время исчезновения функции события |
| Матрица, столбцы которой являются значениями решения, соответствующими временам в |
| Вектор, содержащий индексы, указывающие, какое событие произошло в соответствующее время в |
Уравнение
sol = ddesd(@ddex1de,@ddex1delays,@ddex1hist,[0,5]);
решает DDE на интервале [0,5] с задержками, заданными функцией ddex1delays и дифференциальные уравнения, вычисленные ddex1de. История оценивается для t ≤ 0 функцией ddex1hist. Решение оценивается в 100 равноотстоящих точках в [0,5]:
tint = linspace(0,5); yint = deval(sol,tint);
и нанесено на график с помощью
plot(tint,yint);
Эта проблема связана с постоянными задержками. delay функция имеет вид
function d = ddex1delays(t,y)
%DDEX1DELAYS Delays for using with DDEX1DE.
d = [ t - 1
t - 0.2];Проблема также может быть решена с помощью синтаксиса, соответствующего постоянным задержкам.
delays = [1, 0.2]; sol = ddesd(@ddex1de,delays,@ddex1hist,[0, 5]);
или использование dde23:
sol = dde23(@ddex1de,delays,@ddex1hist,[0, 5]);
Дополнительные примеры решения дифференциальных уравнений задержки см. в разделе ddex2 и ddex3.
[1] Шампин, Л.Ф., «Решение ОДУ и ДУ с остаточным контролем», Прикладная числовая математика, том 52, 2005, стр. 113-127.