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...
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.
Play games and win prizes!Learn more