if true function mainglobal chart;chart = 0;tspan = [0,15];initial_conditions = [100 0];options = odeset('events',@events, 'RelTol', 1e-5, 'MaxStep',1e-2);hold on;durum = 0;while durum ~= 1 [t,z] = ode45(@bouncing,tspan,initial_conditions,options);if chart == 0 disp('tochdown'); %plot(t,z(:,1),'b');
viscircles([3,z(:,1)],5);else disp('liftup'); %plot(t,z(:,1),'r');
viscircles([3,z(:,1)],5);end
if t(end) == tspan(2) durum =1 ; else tspan(1) = t(end);
end chart = 1 – chart; initial_conditions = z(end,:); end
end
function dz = bouncing(t,z) global chart; dz = zeros(2,1); g = 9.81; k = 40; c = 1; m = 1; switch chart case 1 dz(1) = z(2); dz(2) = g-k*z(1)-c*z(2);
case 0 dz(1) = z(2); dz(2) = -g;end
end
function [value, isterminal, direction] = events(t,z) global chart; switch chart case 1 value = z(1); isterminal = 1; direction = 1;
case 0 value = z(1); isterminal = 1; direction = -1;endend end
Best Answer