Решите дифференциальные уравнения с задержкой (DDE) с общими задержками
sol = ddesd(ddefun,delays,history,tspan)
sol = ddesd(ddefun,delays,history,tspan,options)
| Указатель на функцию, который оценивает правую сторону дифференциальных уравнений <reservedrangesplaceholder10> (<reservedrangesplaceholder9>) = f (t, y (<reservedrangesplaceholder5>), y (d (1)..., y (d (<reservedrangesplaceholder0>))). Функция должна иметь форму dydt = ddefun(t,y,Z) где |
| Указатель на функцию, который возвращает вектор-столбец задержек d (j). Задержки могут зависеть как от t, так и от y (t Если все функции задержки имеют вид d (j ) = t - τj, можно задать аргумент |
| Задайте
|
| Интервал интегрирования из |
| Необязательный аргумент интегрирования. Структура, которую вы создаете с помощью |
sol = ddesd(ddefun,delays,history,tspan)
интегрирует систему DDE
на интервале [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 (<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 = 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.