dde23

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

Синтаксис

sol = dde23 (ddefun, задержки, история, tspan)
sol = dde23 (ddefun, задержки, история, tspan, опции)

Аргументы

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 ≤ t0 как вектор - столбец

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

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

tspan

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

опции

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

Описание

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

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

на интервале [t0, tf], где τ1..., τk являются постоянными, положительными задержками и t0, 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 x.

sol.yp

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

sol.solver

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

sol = dde23(ddefun,lags,history,tspan,options) решает как выше со свойствами интегрирования по умолчанию, замененными значениями в options, аргумент, созданный с ddeset. Смотрите ddeset и Типы DDEs для получения дополнительной информации.

Обычно используемые опции являются скалярным допуском относительной погрешности '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 th событие функционируют в events:

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

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

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

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

sol.xe

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

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

Ссылки

[1] Шемпин, L.F. и С. Томпсон, “Решая DDEs в MATLAB”, Прикладная Числовая Математика, Издание 37, 2001, стр 441-458.

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

Была ли эта тема полезной?