В этом примере показано, как использовать dde23 для решения системы DDE (дифференциальных уравнений задержки) с постоянными задержками.
Система уравнений
) y3 ′ (t) = y2 (t).
Функция истории для является постоянной, y3 (t) = 1.
Временные задержки в уравнениях присутствуют только в выражениях, а сами задержки являются константами, поэтому уравнения образуют систему уравнений постоянных задержек.
Чтобы решить эту систему уравнений в MATLAB, необходимо кодировать уравнения, задержки и историю, прежде чем вызывать решатель дифференциальных уравнений задержки dde23, которая предназначена для систем с постоянными задержками. Требуемые функции можно либо включить в качестве локальных функций в конце файла (как здесь сделано), либо сохранить их как отдельные именованные файлы в каталоге по пути MATLAB.
Сначала создайте вектор для определения задержек в системе уравнений. Эта система имеет две различные задержки:
Задержка 1 в первом компоненте ).
Задержка 0,2 во втором компоненте ).
dde23 принимает векторный аргумент для задержек, где каждый элемент является постоянной задержкой для одного компонента.
lags = [1 0.2];
Теперь создайте функцию для кодирования уравнений. Эта функция должна иметь подпись dydt = ddefun(t,y,Z), где:
t - время (независимая переменная).
y - решение (зависимая переменная).
Z(:,j) аппроксимирует задержку lags(j).
Эти входные данные автоматически передаются функции решателем, но имена переменных определяют способ кодирования уравнений. В этом случае:
Z(:,1)
Z(:,2)
function dydt = ddefun(t,y,Z) ylag1 = Z(:,1); ylag2 = Z(:,2); dydt = [ylag1(1); ylag1(1)+ylag2(2); y(2)]; end
Примечание.В конце примера все функции включаются как локальные.
Затем создайте функцию для определения истории решения. История решения - это решение для .
function s = history(t) s = ones(3,1); end
Наконец, определите интервал интеграции и решите DDE с помощью dde23 решатель.
tspan = [0 5]; sol = dde23(@ddefun, lags, @history, tspan);
Структура решения sol имеет поля sol.x и sol.y которые содержат внутренние временные шаги, предпринятые решателем, и соответствующие решения в это время. (Если решение необходимо в определенных точках, можно использовать deval для оценки решения в конкретных точках.)
Постройте график трех компонентов решения в зависимости от времени.
plot(sol.x,sol.y,'-o') xlabel('Time t'); ylabel('Solution y'); legend('y_1','y_2','y_3','Location','NorthWest');

Здесь перечислены локальные вспомогательные функции, которые решатель DDE dde23 вызывает для вычисления решения. Кроме того, эти функции можно сохранить в виде собственных файлов в каталоге по пути MATLAB.
function dydt = ddefun(t,y,Z) % equation being solved ylag1 = Z(:,1); ylag2 = Z(:,2); dydt = [ylag1(1); ylag1(1)+ylag2(2); y(2)]; end %------------------------------------------- function s = history(t) % history function for t <= 0 s = ones(3,1); end %-------------------------------------------
dde23 | ddensd | ddesd | deval