MATLAB Answers


How does ode45 handle highly coupled ODEs (where y' depends on x' and x' depends on y', etc.)?

Asked by Ali
on 19 May 2013

If I have two sets of highly coupled ODEs such as:

dy/dt = A*dx/dt + B*y + C*x

dx/dt = D*dy/dt + E*y + F*x

or if I have a system like:

U = function(dy/dt)

dy/dt = function(U,...)

How would ode45 normally handle this? If I were to do the following:

DY(1) = A*DY(2) + B*y(1) + C*y(2)

DY(2) = D*DY(1) + E*y(1) + F*y(2)

or similarly for the second problem:

U = A*DY(1) + ...

DY(1) = B*U + ...

and run ode45, MATLAB produces results without complaint but I'm slightly hesitant as I'm not sure how it's handling such a coupled system of equations.

MATLAB shouldn't be able to solve this sort of problem with ode45 as it's generally an implicit problem (example number 2 provided above). It should give me an error when I try to run it, however, it runs smoothly and that's what's confusing me. Realistically I should only be able to use ode15i for this sort of problem...

And suggestions?


1 Answer

Answer by Ali
on 20 May 2013
 Accepted answer

After looking through many lines of code, I realize that the reason MATLAB is accepting an implicit equation without complaint is that when you're running a system of equations, you have to initialize the vector with DY = zeros(N,1) where N is the number of equations. It's using this initial zero value for the integration and effectively giving incorrect results.


Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!