Решение дифференциальных уравнений задержки (DDE) нейтрального типа
интегрирует систему дифференциальных уравнений задержки нейтрального типа, которая имеет вид sol = ddensd(ddefun,dely,delyp,history,tspan)
| y '(t) = f (t, y (t), y (dy1),..., y (dyp), y' (dyp1),..., y '(dypq)) | (1) |
t - независимая переменная, представляющая время.
dii - любая из p задержек решения.
dypj - любая из q производных задержек.
Решите следующие нейтральные DDE, представленные Полом, для.

История решения для
.
Создайте новый файл программы в редакторе. Этот файл будет содержать основную функцию и четыре локальные функции.
Определите DDE первого порядка как локальную функцию с именем ddefun.
function yp = ddefun(t,y,ydel,ypdel) yp = 1 + y - 2*ydel^2 - ypdel; end
Определите задержку решения как локальную функцию с именем dely.
function dy = dely(t,y) dy = t/2; end
Определите задержку производной как локальную функцию с именем delyp.
function dyp = delyp(t,y) dyp = t-pi; end
Определите историю решения как локальную функцию с именем history.
function y = history(t) y = cos(t); end
Определение интервала интеграции и решение DDE с помощью ddensd. Добавьте этот код к основной функции.
tspan = [0 pi]; sol = ddensd(@ddefun,@dely,@delyp,@history,tspan);
Вычислите решение в 100 равноотстоящих точках между
и.
Добавьте этот код к основной функции.
tn = linspace(0,pi); yn = deval(sol,tn);
Постройте график результатов. Добавьте этот код к основной функции.
plot(tn,yn); xlim([0 pi]); ylim([-1.2 1.2]); xlabel('time t'); ylabel('solution y');

Выполните всю программу для вычисления решения и отображения графика. Файл ddex4.m содержит полный код для этого примера. Для просмотра кода в редакторе введите edit ddex4 в командной строке.
ddefun - Производная функцияПроизводная функция, заданная как дескриптор функции, синтаксис которой: yp = ddefun(t,y,ydel,ypdel). Аргументы для ddefun описаны в таблице ниже.
| Аргумент ddefun | Описание |
|---|---|
t | Скалярное значение, представляющее текущее значение времени t. |
y | Вектор, который представляет y (t) в уравнении 1. Размер этого вектора: nоколо-1, где n - количество уравнений в системе, которую требуется решить. |
ydel | Матрица, столбцы которой ydel(:,i), представляют y (dyi). Размер этой матрицы: nоколо-p, где n - количество уравнений в системе, которую требуется решить, и p - число y (dy) членов в уравнении 1. |
ypdel | Матрица, столбцы которой ypdel(:,j) представляют y '(dypj). Размер этой матрицы: nоколо-q, где n - количество уравнений в системе, которую требуется решить, и q - число членов y '(dip) в уравнении 1. |
yp | Результат, возвращенный ddefun. Это nоколо-1 вектор, элементы которого представляют правую часть уравнения 1. |
dely - Задержки решенияЗадержки решения, заданные как дескриптор функции, который возвращает dy1,..., dyp в уравнении 1. В качестве альтернативы можно передавать постоянные задержки в виде вектора.
При указании dely как дескриптор функции, синтаксис должен быть dy = dely(t,y). Аргументы для этой функции описаны в таблице ниже.
| Аргумент dely | Описание |
|---|---|
t | Скалярное значение, представляющее текущее значение времени t. |
y | Вектор, который представляет y (t) в уравнении 1. Размер этого вектора: nоколо-1, где n - количество уравнений в системе, которую требуется решить. |
dy | Вектор, возвращенный dely функция, значения которой являются задержками решения, dyi, в уравнении 1. Размер этого вектора: pоколо-1, где p - количество задержек решения в уравнении. Каждый элемент должен быть меньше или равен t. |
Если вы хотите указать постоянные задержки решения, имеющие вид dyi = t - starti, то dely должен быть вектором, где dely(i) = starti. Каждое значение в этом векторе должно быть больше или равно нулю.
Если dy отсутствует в проблеме, установите dely кому [].
Типы данных: function_handle | single | double
delyp - Задержки производныхЗадержки производных, заданные как дескриптор функции, который возвращает dyp1,..., dypq в уравнении 1. В качестве альтернативы можно передавать постоянные задержки в виде вектора.
Если delyp является дескриптором функции, его синтаксис должен быть dyp = delyp(t,y). Аргументы для этой функции описаны в таблице ниже.
| аргумент delyp | Описание |
|---|---|
t | Скалярное значение, представляющее текущее значение времени t. |
y | Вектор, который представляет y (t) в уравнении 1. Размер этого вектора: nоколо-1, где n - количество уравнений в системе, которую требуется решить. |
dyp | Вектор, возвращенный delyp функция, значения которой являются производными задержками, dypj, в уравнении 1. Размер этого вектора должен быть qоколо-1, где q - число задержек решения, dypj, в уравнении. Каждый элемент dyp должно быть меньше t. Есть одно исключение из этого ограничения: если вы решаете начальное значение DDE, значение dyp может равняться t при t = t0. Дополнительные сведения см. в разделе Начальные значения Дифференциальные уравнения нейтральной задержки. |
Если требуется указать постоянные задержки производной, имеющие вид dypj = t - startj, то delyp должен быть вектором, где delyp(j) = thej. Каждое значение в этом векторе должно быть больше нуля. Исключение из этого ограничения возникает при решении проблем с начальными значениями для DDE нейтрального типа. В таких случаях значение в delyp может равняться нулю при t = t0. Дополнительные сведения см. в разделе Начальные значения Дифференциальные уравнения нейтральной задержки.
Если dyp отсутствует в проблеме, установите delyp кому [].
Типы данных: function_handle | single | double
history - История решенияsol, из предыдущей интеграции) | 1около-2 массив ячеекИстория решения, указанная как дескриптор функции, вектор столбца, sol структура (из предыдущей интеграции) или массив ячеек. Это решение при t ≤ t0.
Если история зависит от времени, укажите историю решения как дескриптор функции, синтаксис которой: y = history(t). Эта функция возвращает nоколо-1 вектор, аппроксимирующий решение, y (t), для t < = t0. Длина этого вектора,n, - количество уравнений в системе, которую требуется решить.
Если y (t) является постоянным, можно указатьhistory как nоколо-1 вектор постоянных значений.
Если вы звоните ddensd чтобы продолжить предыдущую интеграцию до t0, можно указать историю в качестве выходных данных, sol, из предыдущей интеграции.
Если вы решаете начальное значение DDE, укажите историю как массив ячеек, {y0, yp0}. Первый элемент, y0, - вектор столбца начальных значений y (t0). Второй элемент, yp0, является вектором-столбцом, элементы которого являются начальными производными y '(t0). Эти векторы должны быть последовательными, что означает, что они удовлетворяют уравнению 1 в t0. Дополнительные сведения см. в разделе Начальные значения Дифференциальные уравнения нейтральной задержки.
Типы данных: function_handle | single | double | struct | cell
tspan - Интервал интеграции1около-2 векторИнтервал интегрирования, указанный как вектор [t0 tf]. Первый элемент, t0, - начальное значение t. Второй элемент, tf, является конечным значением t. Значение t0 должно быть меньше, чем tf.
Типы данных: single | double
options - Дополнительные параметры интеграцииddesetsol - РешениеРешение, возвращенное в виде структуры, содержащей следующие поля.
sol.x | Сетка, выбранная ddensd. |
sol.y | Приближение к y (t) в точках сетки. |
sol.yp | Приближение к y '(t) в точках сетки. |
sol.solver | Вектор символов, идентифицирующий решатель, 'ddensd'. |
Вы можете пройти sol в deval для оценки решения в определенных точках. Например, y = deval(sol, 0.5*(sol.x(1) + sol.x(end))) оценивает решение в середине интервала интегрирования.
Начальное значение DDE имеет dyi≥t0 и dypj≥t0 для всех i и j. При t = t0 все задержанные члены уменьшаются до y (dyi) = y (t0) и y '(dypj) = y' (t0 ):
| y '(t0) = f (t0, y (t0), y (t0),..., y (t0), y' (t0),..., y '(t0)) | (2) |
При определении начального значения нейтральных DDE необходимо ввести y '(t0) в ddensd. Для этого укажите history как массив ячеек {Y0,YP0}. Здесь, Y0 - вектор столбца начальных значений y (t0) иYP0 - вектор-столбец исходных производных, y '(t0). Эти векторы должны быть последовательными, что означает, что они удовлетворяют уравнению 2 в t0.
Для получения информации об алгоритме, используемом в этом решателе, см. раздел Shampine [2].
[1] Пол, К.А.Х. «Тестовый набор функциональных дифференциальных уравнений». Отчеты числового анализа. № 243. Манчестер, Великобритания: факультет математики, Манчестерский университет, 1994 год.
[2] Шампин, Л.Ф. «Диссипативные приближения к нейтральным DDE». Прикладная математика и вычисления. Том 203, номер 2, 2008, стр. 641-648.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.