exponenta event banner

DDE с задержками, зависящими от состояния

В этом примере показано, как использовать ddesd для решения системы DDE (дифференциальных уравнений задержки) с зависимыми от состояния задержками. Эта система DDE была использована в качестве тестовой проблемы Энрайтом и Хаяси [1].

Система уравнений

y1 (t) = y2 (t),

y2 (t) = -y2 (e1-y2 (t)) ⋅y2 (t) 2⋅e1-y2 (t).

Функции истории для t≤0.1 являются аналитическими решениями.

y1 (t) = log (t),

y2 (t) = 1t.

Временные задержки в уравнениях присутствуют только в y терминах. Задержки зависят только от состояния второго компонента y2 (t), поэтому уравнения образуют систему зависимых от состояния уравнений задержки.

Чтобы решить эту систему уравнений в MATLAB, необходимо кодировать уравнения, задержки и историю, прежде чем вызывать решатель дифференциальных уравнений задержки ddesd, которая предназначена для систем с зависимыми от состояния задержками. Требуемые функции можно либо включить в качестве локальных функций в конце файла (как здесь сделано), либо сохранить их как отдельные именованные файлы в каталоге по пути MATLAB.

Задержки кода

Сначала запишите функцию для определения временных задержек в системе. Единственная задержка, присутствующая в этой системе уравнений, находится в термине y2 (e1-y2 (t)).

function d = dely(t,y)
d = exp(1 - y(2));
end

Примечание.В конце примера все функции включаются как локальные.

Кодовое уравнение

Теперь создайте функцию для кодирования уравнений. Эта функция должна иметь подпись dydt = ddefun(t,y,Z), где:

  • t - время (независимая переменная).

  • y - решение (зависимая переменная).

  • Z(n,j) аппроксимирует задержки yn (d (j)), где задержка d (j) задается компонентомj из dely(t,y).

Эти входные данные автоматически передаются функции решателем, но имена переменных определяют способ кодирования уравнений. В этом случае:

  • Z(2,1)→y2 (e1-y2 (t))

function dydt = ddefun(t,y,Z)
dydt = [y(2);
       -Z(2,1)*y(2)^2*exp(1 - y(2))];
end

Журнал кодовых решений

Затем создайте функцию для определения истории решения. История решения - это решение для t≤t0 времени.

function v = history(t) % history function for t < t0
v = [log(t); 
     1./t];
end

Уравнение решения

Наконец, определите интервал интеграции [t0 tf] и решите DDE с помощью ddesd решатель.

tspan = [0.1 5];
sol = ddesd(@ddefun, @dely, @history, tspan);

Решение для построения графика

Структура решения sol имеет поля sol.x и sol.y которые содержат внутренние временные шаги, предпринятые решателем, и соответствующие решения в это время. (Если решение необходимо в определенных точках, можно использовать deval для оценки решения в конкретных точках.)

Постройте график двух компонентов решения по времени с использованием функции истории для вычисления аналитического решения в пределах интервала интегрирования для сравнения.

ta = linspace(0.1,5);
ya = history(ta);

plot(ta,ya,sol.x,sol.y,'o')
legend('y_1 exact','y_2 exact','y_1 ddesd','y_2 ddesd')
xlabel('Time t')
ylabel('Solution y')
title('D1 Problem of Enright and Hayashi')

Figure contains an axes. The axes with title D1 Problem of Enright and Hayashi contains 4 objects of type line. These objects represent y_1 exact, y_2 exact, y_1 ddesd, y_2 ddesd.

Локальные функции

Здесь перечислены локальные вспомогательные функции, которые решатель DDE ddesd вызывает для вычисления решения. Кроме того, эти функции можно сохранить в виде собственных файлов в каталоге по пути MATLAB.

function dydt = ddefun(t,y,Z) % equation being solved
dydt = [y(2); 
       -Z(2,1).*y(2)^2.*exp(1 - y(2))];
end
%-------------------------------------------
function d = dely(t,y) % delay for y
d = exp(1 - y(2));
end
%-------------------------------------------
function v = history(t) % history function for t < t0
v = [log(t); 
     1./t];
end
%-------------------------------------------

Ссылки

[1] Энрайт, У. Х. и Х. Хаяси. «Оценка числового программного обеспечения для дифференциальных уравнений задержки». В трудах ИФИП TC2/WG2.5 рабочая конференция по качеству числового программного обеспечения: оценка и совершенствование. (Р. Ф. Буасверт, изд.). Лондон, Великобритания: Chapman & Hall, Ltd., стр. 179-193.

См. также

| | |

Связанные темы