This example shows how to use
solve a system of DDEs with constant delays.
edit ddex1.m in a command window to view the
code for this example in an editor.
The differential equations are:
The history of this problem is constant:
for t ≤ 0.
Create a new program file in the editor. This file will contain a main function and two local functions.
Define the first-order DDE as a local function.
function dydt = ddex1de(t,y,Z) ylag1 = Z(:,1); ylag2 = Z(:,2); dydt = [ylag1(1); ylag1(1)+ylag2(2); y(2)]; end
Define the solution history as a local function.
function S = ddex1hist(t) S = ones(3,1); end
Define the delays, τ1,…,τk in the main function.
lags = [1,0.2];
Solve the DDE by calling
the main function. Pass the DDE function, the delays, the solution
history, and interval of integration,
sol = dde23(@ddex1de,lags,@ddex1hist,[0,5]);
dde23 function produces a continuous
solution over the whole interval of integration [t0,tf].
Plot the solution returned by
Add this code to your main function.
plot(sol.x,sol.y); title('An example of Wille and Baker'); xlabel('time t'); ylabel('solution y'); legend('y_1','y_2','y_3','Location','NorthWest');
Evaluate the solution at 10 equally spaced points
over the interval of integration. Then plot the results on the same
sol.y. Add this code to the main function.
tint = linspace(0,5,10); Sint = deval(sol,tint) hold on plot(tint,Sint,'o');
Run your program to generate and plot the results.