ddesd

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

Синтаксис

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

Аргументы

ddefun

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

dydt = ddefun(t,y,Z)

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

delays

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

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

history

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

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

  • Постоянный вектор-столбец, если 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)))

на интервале [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 (<reservedrangesplaceholder5>), y (d (1))..., y (d (<reservedrangesplaceholder0>))) исчезают. Эта функция должна иметь вид

[value,isterminal,direction] = events(t,y,Z)

и содержать функцию события для каждого тестируемого события. Для kпервая функция события в events:

  • value(k) - значение kпервая функция события.

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

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

Если вы задаете 'Events' опция и события обнаруживаются, структура output 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);

Эта проблема связана с постоянными задержками. The 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., «Solving ODEs and DDE with Lestual Control», Applied Numerical Mathematics, Vol. 52, 2005, pp. 113-127.