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?

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.

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

Learn moreOpportunities for recent engineering grads.

Apply Today
## 0 Comments