PDEtools - Maple Programming Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Mathematics : Differential Equations : PDEtools : Symmetries : PDEtools/CanonicalCoordinates





compute canonical coordinates for a given symmetry


Calling Sequence




Calling Sequence

CanonicalCoordinates(S, DepVars, NewVars, CanVar, options=value)




list with the infinitesimals of a symmetry generator or the corresponding infinitesimal generator operator



function or list of functions indicating the (old) dependent variables of the problem



(optional) function or list of functions representing the new dependent variables (canonical coordinates)



(optional) the name of the dependent variable with respect to which canonical coordinates are to be computed

jetnotation = ...


(optional) can be true (same as jetvariables), false (default), jetvariables, jetvariableswithbrackets, jetnumbers or jetODE; to respectively return or not using the different jet notations available

simplifier = ...


(optional) indicates the simplifier to be used instead of the default simplify/size@simplify@combine



Given a list with the infinitesimals of a symmetry generator, or the corresponding infinitesimal generator differential operator, the CanonicalCoordinates command computes a transformation from the dependent and independent variables of the problem to the canonical coordinates of the symmetry. This is the change of variables transforming the given list of infinitesimals into one consisting of zeros but for one element equal to 1. The corresponding transformed infinitesimal generator is thus of the form



where uj is a canonical dependent variable for a problem with m dependent variables.


There exist thus m different sets of canonical coordinates leading to infinitesimals generators of the form above with different uj. To choose among them use Canvars to tell the name of the dependent variable of the problem with respect to which the canonical variables are computed. Canvars is not required when there is only one dependent variable.


When there is only one dependent variable, DepVars and NewVars can be represented by a function; otherwise they must be a list of functions representing dependent variables. If NewVars are not given, CanonicalCoordinates will generate a list of globals to represent the canonical coordinates.


Optionally, a simplifier can be specified to be used instead of the default which is the composition of simplify and combine followed by a simplification in size.


To avoid having to remember the optional keywords, if you type the keyword misspelled, or just a portion of it, a matching against the correct keywords is performed, and when there is only one match, the input is automatically corrected.


with(PDEtools, CanonicalCoordinates, ChangeSymmetry, InfinitesimalGenerator);



Consider a PDE problem with two independent variables and one dependent variable, ux,t, and consider the list of infinitesimals of a symmetry group

S := [_xi[x] = x, _xi[t] = 1, _eta[u] = u];



In the input above you can also enter the symmetry S without infinitesimals' labels, as in x,1,u. The corresponding infinitesimal generator is

G := InfinitesimalGenerator(S, u(x,t));



In canonical coordinates -say r,s,vr,s - the infinitesimals of this symmetry are _ξr=0,_ξs=0,_ηv=1. The transformation from the original variables t,x,ux,t to the canonical coordinates r,s,vr,s is obtained via

CanonicalCoordinates(S, u(x,t), v(r,s));



In the input above, instead of S you can also pass the symmetry without infinitesimals' labels, as in x,1,u. You can also pass the infinitesimal generator differential operator G as first argument instead of the list of infinitesimals S

CanonicalCoordinates(G, u(x,t), v(r,s));



Solving now for t,x,ux,t you can change variables in the infinitesimals S or its corresponding differential operator G using ChangeSymmetry, achieving the expected form _ξr=0,_ξs=0,_ηv=1

solve((5), {x,t, u(x,t)});



ChangeSymmetry((6), S, u(x,t));



ChangeSymmetry((6), G, u(x,t));



If vr,s is not indicated, variables prefixed by the underscore _ to represent the canonical variables are introduced

CanonicalCoordinates(S, u(x,t));



To obtain the output in any particular jet notation, useful to perform computations with objects of type, name, e.g., differentiation with respect to a function but represented by a name, use the jetnotation option; compare for instance the output (4.5) with the following output

CanonicalCoordinates(S, u(x,t), v(r, s), jetnotation);



CanonicalCoordinates(S, u(x,t), v(r, s), jetnotation = jetvariableswithbrackets);



See Also