ddesd

Решите дифференциальные уравнения с запаздывающим аргументом (DDEs) с общими задержками

Синтаксис

sol = ddesd(ddefun,delays,history,tspan)
sol = ddesd(ddefun,delays,history,tspan,options)

Аргументы

ddefun

Указатель на функцию, который оценивает правую сторону дифференциальных уравнений y ′ (t) = f (t, y (t), y (d (1)..., y (d (k))). Функция должна иметь форму

dydt = ddefun(t,y,Z)

где t соответствует текущему t, y является вектор-столбцом, который аппроксимирует y (t), и Z(:,j) аппроксимирует y (d (j)) для задержки d (j), данный как j компонента delays(t,y). Вывод является вектор-столбцом, соответствующим f (t, y (t), y (d (1)..., y (d (k))).

delays

Указатель на функцию, который возвращает вектор-столбец задержек d (j). Задержки могут зависеть и от t и от y (t). ddesd налагает требование что d (j) ≤ t при помощи min (d (j), t).

Если все функции задержки имеют форму d (j) = t – τj, можно установить аргумент delays на постоянный векторный delays (j) = τj. С функциями задержки этой формы ddesd используется точно как dde23.

history

Задайте history одним из трех способов:

  • Функция t, таким образом, что y = history(t) возвращает решение y (t) для tt 0 как вектор-столбец

  • Постоянный вектор-столбец, если y (t) является постоянным

  • sol решения от предыдущего интегрирования, если этот вызов продолжает то интегрирование

tspan

Интервал интегрирования от t0=tspan(1) до tf=tspan(end) с t0 < tf.

options

Дополнительный аргумент интегрирования. Структура вы создаете использование функции ddeset. Смотрите ddeset для деталей.

Описание

sol = ddesd(ddefun,delays,history,tspan) интегрирует систему DDEs

y(t)=f(t,y(t),y(d(1)),...,y(d(k)))

на интервале [t 0, tf], где задержки d (j) может зависеть и от t и от y (t) и t 0 <tf. Входные параметры ddefun и delays являются указателями на функцию. См. Создание указателя на функцию для получения дополнительной информации.

Параметризация Функций объясняет, как предоставить дополнительные параметры функциям ddefun, delays и history, при необходимости.

ddesd возвращает решение как структуру sol. Используйте вспомогательный функциональный deval и вывод sol, чтобы оценить решение в отдельных моментах tint в интервале tspan = [t0,tf].

yint = deval(sol,tint)

Структура sol, возвращенный ddesd, имеет следующие поля.

sol.x

Mesh выбрана ddesd

sol.y

Приближение к y (x) в mesh указывает в sol.x.

sol.yp

Приближение к y ′ (x) в mesh указывает в sol.x

sol.solver

Имя решателя, 'ddesd'

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 th событие функционируют в events:

  • value(k) является значением k th функция события.

  • isterminal(k) = 1, если вы хотите, чтобы интегрирование остановилось в нуле этой функции события и 0 в противном случае.

  • direction(k) = 0, если вы хотите, чтобы ddesd вычислил все нули этой функции события, +1, если только нули, где событие функционируют увеличения и -1, если только нули, где событие функционируют уменьшения.

Если вы задаете опцию 'Events', и события обнаруживаются, выходная структура, sol также включает поля:

sol.xe

Вектор - строка из местоположений всех событий, т.е. времена, когда функция события исчезла

sol.ye

Матрица, столбцы которой являются значениями решения, соответствующими временам в sol.xe

sol.ie

Вектор, содержащий индексы, которые задают, который событие имело место в соответствующее время в sol.xe

Примеры

Уравнение

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] Шемпин, L.F., “Решая ОДУ и DDEs с Остаточным Управлением”, Прикладная Числовая Математика, Издание 52, 2005, стр 113-127.