exponenta event banner

ddesd

Решение дифференциальных уравнений задержки (DDE) с общими задержками

Синтаксис

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 - startj, можно задать аргументdelays к вектору константы delays(j) = (j). С функциями задержки этой формы, ddesd используется точно как dde23.

history

Определить history одним из трех способов:

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

  • Вектор константного столбца, если y (t) является постоянным

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

tspan

Интервал интеграции от t0=tspan(1) кому tf=tspan(end) с t0 < tf.

options

Необязательный аргумент интеграции. Структура, создаваемая с помощью ddeset функция. Посмотрите ddeset для получения подробной информации.

Описание

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

y (t) = f (t, y (t), y (d (1)),..., 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 имеет следующие поля.

sol.x

Сетка, выбранная ddesd

sol.y

Приближение к y (x) в точках сетки вsol.x.

sol.yp

Приближение к y(x) в точках сетки в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Функция события в events:

  • value(k) - значение kФункция «-е событие».

  • 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] Шампин, Л.Ф., «Решение ОДУ и ДУ с остаточным контролем», Прикладная числовая математика, том 52, 2005, стр. 113-127.