Ode45 and initial conditions

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

0 votos

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

0 votos

Thanks for the reply Jan! Cheers

Etiquetas

Preguntada:

el 29 de Oct. de 2011

Comentada:

Jan
el 29 de Feb. de 2016

Community Treasure Hunt

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

Start Hunting!

Translated by