reduce order - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


DEtools

  

reduce_order

  

reduce the order of an ODE using symmetries or solutions

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

reduce_order(ODE, symmetries, method, new_vars, keep_order, in_sequence, output = opts)

reduce_order(ODE, y(x)=solution1(x), y(x)=solution2(x), ..., new_vars, keep_order, in_sequence, output = opts)

reduce_order(ODE, basis=[S1(x), S2(x), ...], new_vars, keep_order, in_sequence, output = opts)

Parameters

ODE

-

ODE that is to be reduced

symmetries

-

list or expression sequence of symmetries admitted by the ODE

method

-

(optional) related to reduction using symmetries, can be can (default; canonical coordinates) or dif (differential invariants)

y(x)=solution1, ...

-

equations where the left-hand side is the dependent variable of ODE and the right-hand side a solution for it

basis=[S1(x), ...]

-

related to reducing linear ODEs; S1(x), S2(x), ... are linearly independent solutions

new_vars

-

(optional) sequence of functions - u(t); specify new dependent variables

keep_order

-

(optional) specify that reduce_order reduce the ODE using the symmetries or solutions in the given order instead of optimizing (default behavior)

in_sequence

-

(optional) specify that reduce_order return the whole sequence or chain of reductions of order when many symmetries or solutions are given

output=opts

-

(optional); specify output type; can be any of: ODESolStruc (default), DESol, basis, reduced_ode, solution

Description

• 

The reduce_order function uses ODE symmetries or ODE solutions to compute appropriate changes of variables that reduce the order of the input ODE. By default, the output is a solution expressed in terms of the reduced ODE (see ODESolStruc). As with all ODESolStruc, these solutions can be converted to standard closed form solutions by using the DEtools[buildsol] command if you can solve the reduced ODE.

• 

Optionally, in the case of a linear ODE, the solution can also be expressed in terms of DESol. There is an equivalence between DESol and ODESolStruc; the output can also be the reduced ODE itself, or a solution in standard closed form. For these purposes use the optional argument output=<keyword>, where <keyword> is one of: ODESolStruc, DESol, basis, reduced_ode, and solution.

• 

Up to r reductions of order are returned when r symmetries are given and form a solvable Lie Algebra (see solve_group).

  

Similarly, up to r reductions of order are returned when r independent solutions y=solution1(x), ..., y=solutionr(x) (instead of symmetries) are given.

  

In the case of a linear ODE, any solution Sx is also a symmetry of the form ξ=0&comma;η=Sx; so it is possible to use the symmetry routines with linear ODEs as well. In that case, it suffices to pass the r solutions [S1(x), ..., Sr(x)] written as symmetries [0, S1(x)], ..., [0, Sr(x)].

• 

When many reductions of order are performed, reduce_order can also output in two different manners. The default output is one object (the solution or the reduced ODE) without giving any information on the intermediate reductions of order. By giving the optional argument in_sequence, a Maple sequence of reductions of order is returned such that the first element in the sequence shows the input ODE reduced in order by one, the second element shows the first reduced ODE reduced in order by one, and so on.

  

When no output=<keyword> is indicated, this sequence is a sequence of ODESolStruc, where each ODESolStruc contains the reduced ODE, the forward transformation of variables from the original ODE to the new ODE, and the reverse transformation. All these transformations can be combined using buildsol.

• 

Optionally, you can indicate the name of the dependent variable new_vars to be used in the reduced ODE or also in each of the reduced ODEs when the in_sequence optional argument is given. To indicate these dependent variables it suffices to specify them in the calling sequence anywhere after the first argument (the ODE to reduce).

• 

If many symmetries or solutions are given, for nonlinear ODEs, reduce_order optimizes the order in which the symmetries or solutions are used. To enforce the use of these symmetries in exactly the given order use the optional argument keep_order.

• 

Two algorithms are used to reduce the order of ODEs using symmetries: the method of differential invariants and the method of canonical coordinates. They can be specified by passing dif or can, respectively, as an extra argument. The default is can. See invariants for more information.

• 

Optional arguments can be specified in any order after the first argument (the ODE to reduce).

Examples

With a first order ODE, reduce_order returns the reduction of order obtained by introducing, as new variables, the differential invariants associated to the given symmetry.

withDEtools&colon;

sym1&comma;0

sym1&comma;0

(1)

odediffyx&comma;x=yx

ode&DifferentialD;&DifferentialD;xyx=yx

(2)

invariantssym&comma;yx&comma;can

_I0=y,_I1=1_y1

(3)

The output appears as an ODESolStruc where the first set contains the reduced ODE expressed in terms of the new variables. In this example, it is an ODE of order zero.

reduce_orderode&comma;sym&comma;ut&comma;can

yx=twhereut=1t&comma;t=yx&comma;ut=1&DifferentialD;&DifferentialD;xyx&comma;x=ut&DifferentialD;t+_C1&comma;yx=t

(4)

The differential invariants, however, are not uniquely defined, and the different methods (can and dif) lead to similar but different reductions of order. For example, by giving the extra argument dif, the differential invariants appear as:

invariantssym&comma;yx&comma;dif

_I0=y,_I1=_y1

(5)

and the reduction of order becomes:

reduce_orderode&comma;sym&comma;ut&comma;dif

yx=twhereut=t&comma;t=yx&comma;ut=&DifferentialD;&DifferentialD;xyx&comma;x=1ut&DifferentialD;t+_C1&comma;yx=t

(6)

The ODESolStruc above can be used together with a solution to the reduced ODE to build the solution to the original ODE by using the buildsol function. This is the reduced ODE, which in this example happens to be of order zero, that is, already a solution for u(t)

op2&comma;1&comma;1&comma;rhs

ut=t

(7)

and this is how you build the solution using DEtools[buildsol] from the output of reduce_order and this solution for u(t)

buildsol&comma;

yx=&ExponentialE;xc__1

(8)

Here is a second order ODE example. Given two symmetries, build the second order equation simultaneously invariant under the symmetries (see equinv).

syms1&comma;0&comma;0&comma;expx

syms1&comma;0&comma;0&comma;&ExponentialE;x

(9)

odeequinvsyms&comma;yx&comma;2

ode&DifferentialD;2&DifferentialD;x2yx=yx+f__1yx+&DifferentialD;&DifferentialD;xyx

(10)

Reduce this ODE using the first symmetry 1&comma;0.

reduce_orderode&comma;syms1&comma;uv

yx=vwhere&DifferentialD;&DifferentialD;vuv=vf__1v+1uvuv3&comma;v=yx&comma;uv=1&DifferentialD;&DifferentialD;xyx&comma;x=uv&DifferentialD;v+c__1&comma;yx=v

(11)

The reduction using the second symmetry 0&comma;&ExponentialE;x is given by:

reduce_orderode&comma;syms2&comma;uv

yx=uv&DifferentialD;v+c__1&ExponentialE;vwhere&DifferentialD;&DifferentialD;vuv=2uv+&ExponentialE;vf__1uv&ExponentialE;v&comma;v=x&comma;uv=&ExponentialE;xyx+&DifferentialD;&DifferentialD;xyx&comma;x=v&comma;yx=uv&DifferentialD;v+c__1&ExponentialE;v

(12)

Find the complete reduction using both symmetries. By giving the extra argument in_sequence, the output is shown as a sequence: the first reduction followed by the second reduction.

ooreduce_orderode&comma;syms&comma;uv&comma;UV&comma;dif&comma;in_sequence

ooyx=uv&ExponentialE;v&DifferentialD;v+c__1&ExponentialE;vwhere&DifferentialD;&DifferentialD;vuv=uv+f__1uv&comma;v=x&comma;uv=yx+&DifferentialD;&DifferentialD;xyx&comma;x=v&comma;yx=uv&ExponentialE;v&DifferentialD;v+c__1&ExponentialE;v,uv=VwhereUV=V+f__1V&comma;V=uv&comma;UV=&DifferentialD;&DifferentialD;vuv&comma;v=1UV&DifferentialD;V+c__2&comma;uv=V

(13)

Show the reduced ODEs.

o1op2&comma;1&comma;1&comma;rhsoo1

o1&DifferentialD;&DifferentialD;vuv=uv+f__1uv

(14)

o2op2&comma;1&comma;1&comma;rhsoo2

o2UV=V+f__1V

(15)

Build the general solution.

o1op2&comma;1&comma;1&comma;rhsoo1

o1&DifferentialD;&DifferentialD;vuv=uv+f__1uv

(16)

buildsoloo2&comma;o2&comma;implicit

uv=RootOfv` `_Z1_af__1_a&DifferentialD;_a+c__2

(17)

buildsoloo1&comma;

yx=RootOfx` `_Z1_af__1_a&DifferentialD;_a+c__2&ExponentialE;x&DifferentialD;x+c__1&ExponentialE;x

(18)

odetest&comma;ode

0

(19)

Construct a parametric solution.

buildsoloo

yx=V&ExponentialE;1UV&DifferentialD;Vc__2UV&DifferentialD;V+c__1&ExponentialE;1UV&DifferentialD;V+c__2whereUV=V+f__1V&comma;V=yx+&DifferentialD;&DifferentialD;xyx&comma;UV=&DifferentialD;&DifferentialD;xyx+&DifferentialD;2&DifferentialD;x2yx&comma;x=1UV&DifferentialD;V+c__2&comma;yx=V&ExponentialE;1UV&DifferentialD;Vc__2UV&DifferentialD;V+c__1&ExponentialE;1UV&DifferentialD;V+c__2

(20)

op2&comma;1&comma;1&comma;rhs

UV=V+f__1V

(21)

op2&comma;3&comma;rhs

x=1UV&DifferentialD;V+c__2&comma;yx=V&ExponentialE;1UV&DifferentialD;Vc__2UV&DifferentialD;V+c__1&ExponentialE;1UV&DifferentialD;V+c__2

(22)

subs&comma;

x=1V+f__1V&DifferentialD;V+c__2&comma;yx=V&ExponentialE;1V+f__1V&DifferentialD;Vc__2V+f__1V&DifferentialD;V+c__1&ExponentialE;1V+f__1V&DifferentialD;V+c__2

(23)

See Also

DEtools

DEtools[buildsol]

DEtools[equinv]

DEtools[invariants]

DEtools[solve_group]

dsolve

dsolve/education

dsolve[ODESolStruc]

int

op

PDEtools

rhs

subs