Try this:
x0=-70;
t0=0;
dt=0.1;
tmax=20;
tvec = [t0 tmax];
opts = odeset('Events',@depolEvents);
for k = 1:10
[t{k},x{k}]=ode45(@test_ode, tvec, x0, opts);
x0 = -65;
tvec = [t{k}(end) t{k}(end)+tmax]
end
tv = cat(1,t{:});
xv = cat(1,x{:});
figure
plot (tv,xv)
grid
function [dydt]=test_ode(t,y)
dydt=-1/10*y+13;
end
function [position,isterminal,direction] = depolEvents(t,y)
position = y(1) + 50;
isterminal = 1;
direction = 1;
end
This uses the techniques in ODE Event Location to stop the integration that is restartted in the next increment of the loop. If it does not do what you want as written (since I may not have understood exactly what you want to do), experiment with it to get the result you want.
Best Answer