Решите дифференциальные уравнения с запаздывающим аргументом (DDEs) с общими задержками
sol = ddesd(ddefun,delays,history,tspan)
sol = ddesd(ddefun,delays,history,tspan,options)
| Указатель на функцию, который оценивает правую сторону дифференциальных уравнений y ′ (t) = f (t, y (t), y (d (1)..., y (d (k))). Функция должна иметь форму dydt = ddefun(t,y,Z) где |
| Указатель на функцию, который возвращает вектор-столбец задержек d (j). Задержки могут зависеть и от t и от y (t). Если все функции задержки имеют форму d (j) = t – τj, можно установить аргумент |
| Задайте
|
| Интервал интегрирования от |
| Дополнительный аргумент интегрирования. Структура вы создаете использование |
sol = ddesd(ddefun,delays,history,tspan)
интегрирует систему DDEs
на интервале [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
имеет следующие поля.
| Mesh выбрана |
| Приближение к y (x) в mesh указывает в |
| Приближение к y ′ (x) в mesh указывает в |
| Имя решателя, |
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'
опция и события обнаруживаются, структура output sol
также включает поля:
| Вектор-строка из местоположений всех событий, т.е. времена, когда функция события исчезла |
| Матрица, столбцы которой являются значениями решения, соответствующими временам в |
| Вектор, содержащий индексы, которые задают, который событие имело место в соответствующее время в |
Уравнение
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.