Check if differential index of system of equations is lower than 2
isLowIndexDAE(
checks
if the system eqs
,vars
)eqs
of first-order semilinear differential
algebraic equations (DAEs) has a low differential index. If the differential
index of the system is 0
or 1
,
then isLowIndexDAE
returns logical 1
(true).
If the differential index of eqs
is higher than 1
,
then isLowIndexDAE
returns logical 0
(false).
The number of equations eqs
must match
the number of variables vars
.
Check if a system of first-order semilinear
DAEs has a low differential index (0
or 1
).
Create the following system of two differential algebraic equations.
Here, x(t)
and y(t)
are the
state variables of the system. Specify the equations and variables
as two symbolic vectors: equations as a vector of symbolic equations,
and variables as a vector of symbolic function calls.
syms x(t) y(t) eqs = [diff(x(t),t) == x(t) + y(t), x(t)^2 + y(t)^2 == 1]; vars = [x(t), y(t)];
Use isLowIndexDAE
to check the differential
order of the system. The differential order of this system is 1
.
For systems of index 0
and 1
, isLowIndexDAE
returns 1
(true
).
isLowIndexDAE(eqs, vars)
ans = logical 1
Check if the following DAE system has a low
or high differential index. If the index is higher than 1
,
then use reduceDAEIndex
to reduce it.
Create the following system of two differential algebraic equations.
Here, x(t)
, y(t)
, and z(t)
are
the state variables of the system. Specify the equations and variables
as two symbolic vectors: equations as a vector of symbolic equations,
and variables as a vector of symbolic function calls.
syms x(t) y(t) z(t) f(t) eqs = [diff(x(t),t) == x(t) + z(t),... diff(y(t),t) == f(t), x(t) == y(t)]; vars = [x(t), y(t), z(t)];
Use isLowIndexDAE
to check the differential
index of the system. For this system isLowIndexDAE
returns 0
(false
).
This means that the differential index of the system is 2
or
higher.
isLowIndexDAE(eqs, vars)
ans = logical 0
Use reduceDAEIndex
to rewrite the system
so that the differential index is 1
. Calling this
function with four output arguments also shows the differential index
of the original system. The new system has one additional state variable, Dyt(t)
.
[newEqs, newVars, ~, oldIndex] = reduceDAEIndex(eqs, vars)
newEqs = diff(x(t), t) - z(t) - x(t) Dyt(t) - f(t) x(t) - y(t) diff(x(t), t) - Dyt(t) newVars = x(t) y(t) z(t) Dyt(t) oldIndex = 2
Check if the differential order of the new system is lower than 2
.
isLowIndexDAE(newEqs, newVars)
ans = logical 1
daeFunction
| decic
| findDecoupledBlocks
| incidenceMatrix
| massMatrixForm
| odeFunction
| reduceDAEIndex
| reduceDAEToODE
| reduceDifferentialOrder
| reduceRedundancies