while in ode45
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Arnab
el 30 de Nov. de 2024
Comentada: Arnab
el 1 de Dic. de 2024
Let me solve an ODE .
dy/dt=y.
y(0)=1.
Now i want to just solve the ODE for 5 seconds. Let y(5) denote the value of state 'y' at time =5.
At t=5 I want to update the initial condition as: y(5)=0.5*y(5) and again solve the given ODE for next 10 seconds.
I want to use while statement for this work. Can I do that ? If yes, please provide some outline of the code.
Thanks
2 comentarios
James Tursa
el 30 de Nov. de 2024
What have you done so far? What specific problems are you having with your code? Can you code up the first part, without any while loop, to just solve for the first 5 seconds?
Respuesta aceptada
Cris LaPierre
el 30 de Nov. de 2024
One of your inputs to ode45 is tspan. If I were going to do this, I would look at building is so that my loop calls ode45 with the desired inputs rather than trying to do it inside the odefcn.
Here is an outline (untested)
y0 = 0;
tspan = [0 5;5 15]
y_out = [];
for ts = 1:sizse(tspan,1));
[t,y] = ode45(odefcn,tspan(ts,:),y0);
y0 = o.5*y(end);
y_out = [y_out;y];
end
9 comentarios
Torsten
el 1 de Dic. de 2024
As you are a beginner in MATLAB, use MATLAB Onramp to learn the basics of the new language:
Concerning your question, it will help to study the "ballode" example here:
Más respuestas (0)
Ver también
Categorías
Más información sobre Ordinary Differential Equations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
