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

1 view (last 30 days)
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?

Accepted Answer

Ali
Ali on 20 May 2013
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.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!