# reduceDifferentialOrder

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

## Syntax

## Description

`[`

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.

## Examples

### Reduce Differential Order of DAE System

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)

### Show Relations Between Generated and Original Variables

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)]

## Input Arguments

## Output Arguments

## Version History

**Introduced in R2014b**