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.


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!