Differential equation ode45 matlab
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi! I have a differential equation and I try to solve them by Matlab (ODE45) For example:
function dy = f8(t,y)
dy = 3 - 3./25.*y; %(1)
tspan = [0, 2]; y0 = -3;
[Y,T] = ode45(@f8, tspan, y0);
plot(Y,T)
grid on

When the curve reaches=0, I have to go to the equation of (2):
dy = 10-3./10.*y; %(2)
Please, help me, How can I do it?
0 Kommentare
Antworten (1)
Star Strider
am 27 Aug. 2014
You need to detect the zero-crossing as an ‘event’. See the documentation on Event Location for details.
It is not difficult, but it can be a bit of a challenge to get it working the first time you do it.
2 Kommentare
Star Strider
am 28 Aug. 2014
Bearbeitet: Star Strider
am 28 Aug. 2014
First, when the integration stops at the zero-crossing, immediately store your first set of t and x values as an array so they do not get overwritten.
Second, use the last t and x values for your new initial t and x values, call ode45 with your second function and those initial conditions and time, and continue integrating until the end of tspan.
Third, append your second set of t and x values to your first set to get the complete integration sequence. (It does not appear from your second ODE that you will have another zero-crossing, so you will only have to do this once.)
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!