This example shows how to use
solve a system of two DDEs with a state-dependent delay. This system
of DDEs was used as a test problem by Enright and Hayashi .
edit ddex3.m in a command window to view the
complete code for this example in an editor.
The equations for this system are:
The analytical solution
is used as the history for t ≤ 0.1
and the equations are solved on
[0.1, 5] with
is appropriate in this case because the first factor in the second
equation has the form y2(d(y))
with a delay that depends on the second component of the solution.
Create a new program file in the editor. This file will contain a main function and three local functions.
Code the system of DDEs as a local function.
function dydt = ddex3de(t,y,Z) dydt = [y(2); -Z(2)*y(2)^2*exp(1 - y(2))]; end
Define the delay as a local function.
function d = ddex3delay(t,y) d = exp(1 - y(2)); end
Define the solution history as a local function.
function v = ddex3hist(t) v = [log(t); 1./t]; end
Define the interval of integration and solve the system. Add this code to the main function in your program file.
tspan = [0.1 5]; sol = ddesd(@ddex3de,@ddex3delay,@ddex3hist,tspan);
Use the history function to calculate the analytical solution within the integration interval. Add this code to the main function.
texact = linspace(0.1,5); yexact = ddex3hist(texact);
Plot the numerical solution on the same axes as the analytical solution. Add this code to the main function.
figure plot(texact,yexact,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')
Run your program to generate and plot the results.
 Enright, W.H. and H. Hayashi. "The Evaluation of Numerical Software for Delay Differential Equations." In Proceedings of the IFIP TC2/WG2.5 working conference on Quality of numerical software: assessment and enhancement. (R.F. Boisvert, ed.). London, UK: Chapman & Hall, Ltd., pp. 179-193.