Azzera filtri
Azzera filtri

combining ODE_FUNC and EVENT_FUNC for ODE solvers

2 visualizzazioni (ultimi 30 giorni)
Chris
Chris il 21 Feb 2014
Risposto: Torsten il 6 Lug 2015
I'm solving a non-stiff non-linear ODE problem using matlab's ODE23/ODE45 solvers. I have a transition in the model which I handle with an EVENT_FUNC. The value X that the EVENT_FUNC checks requires a sizable calculation.
My problem is that I already need to calculate X in my ODE_FUNC. Because the EVENT_FUNC is a separate thing, I have to calculate X twice which is not efficient.
My question is; is there any way to combine the ODE_FUNC and EVENT_FUNC such that the ODE_FUNC returns X together with all the other 2 parameters required by the EVENT_FUNC such that I don't have to perform the same computation twice.
Any suggestions / solutions are much appreciated.

Risposte (1)

Torsten
Torsten il 6 Lug 2015
Define X as global in ODE_FUNC and EVENT_FUNC.
Then check whether you can use the (last) value for X calculated in ODE_FUNC also in EVENT_FUNC (i.e. whether t and y as input parameters are the same).
Best wishes
Torsten.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by