Main Content

Reduce system of higher-order differential equations to equivalent system of first-order differential equations

`[`

rewrites
a system of higher-order differential equations `newEqs`

,`newVars`

]
= reduceDifferentialOrder(`eqs`

,`vars`

)`eqs`

as
a system of first-order differential equations `newEqs`

by
substituting derivatives in `eqs`

with new variables.
Here, `newVars`

consists of the original variables `vars`

augmented
with these new variables.

Reduce a system containing higher-order DAEs to a system containing only first-order DAEs.

Create the system of differential equations, which includes
a second-order expression. Here, `x(t)`

and `y(t)`

are
the state variables of the system, and `c1`

and `c2`

are
parameters. 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) c1 c2 eqs = [diff(x(t), t, t) + sin(x(t)) + y(t) == c1*cos(t),... diff(y(t), t) == c2*x(t)]; vars = [x(t), y(t)];

Rewrite this system so that all equations become first-order
differential equations. The `reduceDifferentialOrder`

function
replaces the higher-order DAE by first-order expressions by introducing
the new variable `Dxt(t)`

. It also represents all
equations as symbolic expressions.

[newEqs, newVars] = reduceDifferentialOrder(eqs, vars)

newEqs = diff(Dxt(t), t) + sin(x(t)) + y(t) - c1*cos(t) diff(y(t), t) - c2*x(t) Dxt(t) - diff(x(t), t) newVars = x(t) y(t) Dxt(t)

Reduce a system containing a second- and a
third-order expression to a system containing only first-order DAEs.
In addition, return a matrix that expresses the variables generated
by `reduceDifferentialOrder`

via the original variables
of this system.

Create a system of differential equations, which includes a
second- and a third-order expression. 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) f(t) eqs = [diff(x(t),t,t) == diff(f(t),t,t,t), diff(y(t),t,t,t) == diff(f(t),t,t)]; vars = [x(t), y(t)];

Call `reduceDifferentialOrder`

with three
output arguments. This syntax returns matrix `R`

with
two columns: the first column contains the new variables, and the
second column expresses the new variables as derivatives of the original
variables, `x(t)`

and `y(t)`

.

[newEqs, newVars, R] = reduceDifferentialOrder(eqs, vars)

newEqs = diff(Dxt(t), t) - diff(f(t), t, t, t) diff(Dytt(t), t) - diff(f(t), t, t) Dxt(t) - diff(x(t), t) Dyt(t) - diff(y(t), t) Dytt(t) - diff(Dyt(t), t) newVars = x(t) y(t) Dxt(t) Dyt(t) Dytt(t) R = [ Dxt(t), diff(x(t), t)] [ Dyt(t), diff(y(t), t)] [ Dytt(t), diff(y(t), t, t)]

`findDecoupledBlocks`

| `daeFunction`

| `decic`

| `incidenceMatrix`

| `isLowIndexDAE`

| `massMatrixForm`

| `odeFunction`

| `reduceDAEIndex`

| `reduceDAEToODE`

| `reduceRedundancies`