This example shows how to use dde23 to solve a system of DDEs with constant delays.
The differential equations are:
are solved on [0,5] with history:
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 dde23 in the main function. Pass the DDE function, the delays, the solution history, and interval of integration, [0,5], as inputs.
sol = dde23(@ddex1de,lags,@ddex1hist,[0,5]);
The dde23 function produces a continuous solution over the whole interval of integration [t0,tf].
Plot the solution returned by dde23. 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 the results on the same axes as sol.y. Add this code to the main function.
tint = linspace(0,5,10); Sint = deval_r(sol,tint) hold on plot(tint,Sint,'o');
Run your program to generate and plot the results.
代码如下:
ddex1dez = @(t,y,Z) [Z(1,1);Z(1,1)+Z(2,2);y(2)];
lags = [1,0.2];
sol = dde23(ddex1dez,lags,[1 1 1],[0,5]);
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’);
tint = linspace(0,5,10);
Sint = deval(sol,tint)
hold on
plot(tint,Sint,’o’);
或者 按如下代码执行:
clear;clc
lags=[1,0.2];
history=[1;1;1];
tspan=[0,5];
sol = dde23(@myddefun,lags,history,tspan)
plot(sol.x,sol.y)
function dy = myddefun(t,y,Z)
dy=[
Z(1,1);
Z(1,1)+Z(2,2);
y(2) ];