MATLAB: Can an ODE be solved with an implicit form in MATLAB

daeformimplicitMATLABode

I would like to know if MATLAB can solve equations in the form of f(x',x,t) = 0. For example, when the ODE is not in the explict form x' = f(x,t) + u(t), but in the implicit form f(x',x,t) = 0.

Best Answer

The general form f(x',x,t) = 0 is a differential algebraic equation (DAE). Implicit ODEs are a special case of DAE's with no algebraic equations. The function ODE15I available in MATLAB version 7.0 (R14) and above can solve fully implicit ODEs and DAEs of index 1.
For previous versions of MATLAB, you may be able to use the function ODE15S as described in the attached document, 'bvp_paper.pdf'.
This paper has many examples of solving DAEs, in addition to the HB1DAE and AMP1DAE examples included in MATLAB 5.3 (R11). Additionally, the following paper may also be helpful:
<http://audiophile.tam.cornell.edu/~als93/SR97.pdf>
For a more complete list of the types of integration available in MATLAB, see the Related Solution listed at the bottom of the page.
You may want to look at "Numerical Solution of Initial-Value Problems in Differential-Algebraic Equations" by K.E. Brenan, S.L. Campbell, and L.R. Petzold for more information about DAEs.
If you have a DAE with index greater than 1, MATLAB’s ODE solvers cannot solve it directly. However, you can apply index reduction on the DAE to reduce it to a DAE with an index of 1 and use ODE15S on that reduced DAE.
Related Question