Ode45 and initial conditions

7 visualizaciones (últimos 30 días)
gbernardi
gbernardi el 29 de Oct. de 2011
Comentada: Jan el 29 de Feb. de 2016
Hello everybody, I'm using the MATLAB ode solver ode45 to numerically solve some easy differential equations.
I got how to use this tool, but there are some situations that left me a bit puzzled.
Say, I have the differential equation:
y'(x) = f(y,x)
and I want to solve it in a range (a,b) using the initial condition
y(c) = k
with k,c being constants and
a<c<b.
How can I say to the solver that my initial condition is not in the point a, but in the point c (according to the help, once one provides the time span in ode45, the initial condition is automatically assigned to the initial point of it)?
I solved the problem splitting the interval in 2 parts
(a,c) and (c,b)
and calling the solver twice (apparently ode45 works backward just as fine as it works forward :D). The solution is correct in this way but i find the method a bit lumbering (let's say I'd have expected MATLAB doing that for me automatically ;)
Any suggestion on a more elegant use of ode45?
Thank you in advance!
Giuliano

Respuesta aceptada

Jan
Jan el 29 de Oct. de 2011
This is the best solution. It is the standard case that the "initial condition" concerns the initial time.
If you want a "nicer" solution, you can create a wrapper:
function [y, t] = ODE45_intermediateStart(Fcn, a, b, c)
Then you can insert the two calls to ODE45 and join the outputs.
  2 comentarios
jatinder goyal
jatinder goyal el 22 de Feb. de 2016
Can you please elaborate the answer? I didn't understood what you said.
Jan
Jan el 29 de Feb. de 2016
@jatinder goyal: My suggestion was almost trivial, because the OP found an efficient solution already. The problem was to integrate from a < c < b, and the conditions are known for the time c. The solution is to integrate 2 times: 1. from c to b, and 2. from c to a. I only added the idea, that these 2 calls of ODE45 can be wrapped inside another function, which might look a little bit nicer in the main program.

Iniciar sesión para comentar.

Más respuestas (1)

gbernardi
gbernardi el 30 de Oct. de 2011
Thanks for the reply Jan! Cheers

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by