dde23

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

Синтаксис

sol = dde23(ddefun,lags,history,tspan)
sol = dde23(ddefun,lags,history,tspan,options)

Аргументы

ddefun

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

dydt = ddefun(t,y,Z)

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

lags

Вектор постоянных, положительных задержек τ 1,..., τk.

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 = dde23(ddefun,lags,history,tspan) интегрирует систему DDE

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

на интервале [t 0, tf], где τ 1,..., τk постоянны, положительные задержки и t 0, tf. Входной параметр, ddefun, является указателем на функцию.

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

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

yint = deval(sol,tint)

Структура sol возвращается по dde23 имеет следующие поля.

sol.x

Mesh, выбранная по dde23

sol.y

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

sol.yp

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

sol.solver

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

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τ1),...,y(tτk)) исчезнуть. Эта функция должна иметь вид

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

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

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

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

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

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

sol.xe

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

sol.ye

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

sol.ie

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

Примеры

Этот пример решает 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 отслеживает разрывы и интегрируется с явной парой Runge-Kutta (2,3) и интерполяцией ode23. Он использует итерацию, чтобы сделать шаги дольше, чем лаги.

Ссылки

[1] шемпин, L.F. and S. Thompson, «Solving DDEs in MATLAB», Applied Numerical Mathematics, Vol. 37, 2001, pp. 441-458.

Представлено до R2006a