isLowIndexDAE

Check if differential index of system of equations is lower than 2

Description

example

isLowIndexDAE(eqs,vars) checks if the system 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.

Examples

Check Differential Index of DAE System

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

Reduce Differential Index of DAE System

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

Input Arguments

collapse all

System of first-order semilinear differential algebraic equations, specified as a vector of symbolic equations or expressions.

State variables, specified as a vector of symbolic functions or function calls, such as x(t).

Example: [x(t),y(t)]