gusucode.com > demos工具箱matlab源码程序 > demos/ddex5.m
function ddex5 %DDEX5 This example shows how to solve a neutral DDE of initial value type. % The problem appears in Z. Jackiewicz, One step methods of any order for % neutral functional differential equations, SINUM 21 (1984), pp. 486-511. % The equation % y'(t) = 2*cos(2*t)*y(t/2)^(2*cos(t)) + log(y'(t/2)) % - log(2*cos(t)) - sin(t) % has delay function t/2 and t0 = 0, so it is an initial-value NDDE. % With y(0) = 1, a consistent initial slope s = y'(0) must satisfy the % NDDE at t0, which is here s = 2+log(s)-log(2). Jackiewicz uses s = 2 % for which there is an analytical solution of the NDDE. However, there % exists another consistent initial slope for this problem, % s = 0.4063757399599599... % % See also DDENSD, FUNCTION_HANDLE. % Copyright 2012-2014 The MathWorks, Inc. % Anonymous function calculating the delay delay = @(t,y) t/2; y0 = 1; s1 = 2; s2 = 0.4063757399599599; % Two consistent initial slopes t0 = 0; tf = 0.1; tspan = [t0, tf]; % Solve as initial-value neutral DDE. sol1 = ddensd(@ddex5de,delay,delay,{y0,s1},tspan); % Changing the initial slope changes the computed solution. sol2 = ddensd(@ddex5de,delay,delay,{y0,s2},tspan); % Analytical solution for initial slope s1: t = linspace(t0,tf,10); y1 = exp(sin(2*t)); figure plot(sol1.x,sol1.y,'b',t,y1,'ro',sol2.x,sol2.y,'k') legend('numerical, y''(0) = 2','analytical, y''(0) = 2',... 'numerical, y''(0) \approx 0.4','Location','NorthWest') xlabel('time t') ylabel('solution y') title('Two solutions of Jackiewicz'' initial-value NDDE') end % ddex5 % == Local function ========================================================= function dydt = ddex5de(t,y,ydel,ypdel) % Differential equation function for DDEX5. dydt = 2*cos(2*t)*ydel^(2*cos(t)) + log(ypdel) - log(2*cos(t)) - sin(t); end % ddex5de