## `detools::autoreduce` -- autoreduction of a system of differential equations

#### Introduction

`detools::autoreduce` autoreduces a system of differential equations, i.e. it tries to simplify the equations as much as possible by entering each equation into all the other ones. The ultimate goal is to achieve a triangular form.

#### Call(s)

`detools::autoreduce(sys, indl, depl)`
`detools::autoreduce(dfs)`

#### Parameters

`sys` | - | the differential equations: a list ofexpressions.
`indl` | - | the independent variables: a list of (indexed) identifiers.
`depl` | - | the dependent variables: a list of (indexed) identifiers.
`dfs` | - | the differential equations: a list of elements of a domain in `Cat::DifferentialFunction(DV)`.

#### Returns

an autoreduced list of differential equations; the equations are represented either as expressions (first form of call) or as elements of a domain in `Cat::DifferentialFunction(DV)` (second form of call).

#### Related Functions

`simplify`

#### Details

- Autoreduction is a basic algorithm for the simplification of over-determined systems of differential equations. The appearing derivatives are ordered according to some ranking. Then each equation is solved for its leading derivative with respect to this ranking (if possible) and entered into all other equations in order to eliminate this derivative from them. This strategy is followed as long as substitutions can be performed.
- For linear equations the used algorithm will always succeed in transforming the system to triangular form. In the case of non-linear equations, this depends on whether it is possible to solve for the leading derivatives. In general, it cannot be guaranteed that dependent equations are always removed.
- Obviously, the result of an autoreduction depends on the chosen ranking. A specific ranking can only be prescribed by using an appropriate domain in `Cat::DifferentialFunction(DV)`, i.e. by using the second call of `detools::autoreduce`. Otherwise the default ranking is used which sorts first by the order of the derivative and then reverse lexicographically.

#### Example 1

We want to simplify the two differential equations 3*diff(u(x,y),x,y)+diff(u(x,y),y)=0 and diff(u(x,y),x)=0. Obviously, the second order term in the first equation is a derivative of the second equation. Thus it is eliminated by `detools::autoreduce`.

    >> detools::autoreduce([3*u([x, y]) + u([y]), u([x])], [x, y], [u])

                                 [u([x]), u([y])]

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000