ODE45 change y at event
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
bstechel
am 4 Okt. 2019
Bearbeitet: Corentin Dewez-Raszka
am 24 Sep. 2020
Can i influence the 'y' during an ode45 at a certain event?
I want to let the ODE45 stop at a certain event, manipulate the result at that timepoint and let it run further using the manipulated result as initial condition.A basic example is this:
spawnday=250;
function [value,isterminal,direction] = half_y_at_event(t, y, spawnday)
value = [t-spawnday];
isterminal = [1];
direction = [];
end
options=odeset('Events', @half_y_at_event, 'AbsTol', 1e-8, 'RelTol', 1e-8);
[t1, y1, te, ye, ie] = ode45(@dget_y, [0 500], [y_0], options, [pars]);
ye=ye/2;
[t2, y2] = ode45(@dget_y, [0 500], [ye], options, [pars]);
Is there a possibility to combine both ODE45 into one?
Mergin the matrices later is not an option.
2 Kommentare
darova
am 4 Okt. 2019
Using ode45 two times?
[t1, y1, te, ye, ie] = ode45(@dget_y, [0 500], [y_0], options, [pars]);
ye = ye/2;
[t2, y2] = ode45(@dget_y, [0 500]+t1(end), ye(:,end));
Akzeptierte Antwort
Steven Lord
am 14 Okt. 2019
You can use the ballode example as a model. That has an events function that stops the solver each time the bouncing ball touches the ground. It then changes the initial condition (based on the solution the solver gave when the event occurred) and starts the solver again with the new initial condition.
edit ballode
3 Kommentare
Corentin Dewez-Raszka
am 24 Sep. 2020
Bearbeitet: Corentin Dewez-Raszka
am 24 Sep. 2020
Hey, sorry to disturb, but I have the ame problem you did, where can I get the code for ballode ?
EDIT : nevermind, found it, thx guys
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!