PDEtools
dchange
perform change of variables in mathematical expressions or procedures
Calling Sequence
Parameters
Description
Examples
dchange(tr, expr)
dchange(tr, expr, newvars, itr, known=..., unknown=..., params=..., simp_proc)
tr
-
set of equations corresponding to the transformation from the old variables on the left hand side of the equations to the new variables on the right hand side
expr
algebraic expression or procedure (program)
newvars
(optional) list containing the new variables; required if the number of new variables is not the same as the number of old variables
itr
(optional) set of inverse transformation equations
known=...
(optional) equation of the form known=args, where args is a function or set of functions to be transformed as known functions
unknown=...
(optional) equation of the form unknown=args, where args is a function or set of functions to be transformed as unknown functions
params=...
(optional) equation of the form params=args, where args is a set with names to be considered just parameters of the transformation, not variables
simp_proc
(optional) simplification procedure to be applied to the result
The dchange command realizes changes of variables in mathematical expressions (PDEs, multiple integrals, integro-differential equations, limits, and so on) and in procedures. Only the global variables of a procedure can be changed using the dchange command, not the local ones.
This command was meant as a unified command for changing variables in arbitrary mathematical expressions, according to a given transformation of variables. In addition, it can use any specific indication for the inverse transformation, in which case a different algorithm for changing variables in derivatives is used. This is particularly useful when the transformation involves special functions not known to the system, or the "target" involves derivatives and the transformation is not one-to-one (see the examples).
These are the conventions for the arguments:
a) The first and second arguments have a fixed position. The first argument is the transformation, in the form old_var = f(new_vars) or as a set of equations with this form, and the second is the target, in the form of an algebraic expression, an equation, or a set or list of them. The other (all optional) arguments may appear in any order after the second one.
b) The old and new variables involved in the transformation equations must be of type name or of type function. This second version of the dchange command also accepts transformation equations for the dependent variables (functions), allowing for a direct study of the invariance groups of a given PDE. The extension of the transformation to any required differential order is automatic.
c) The sets of transformation equations must contain only old (new) variables on the left hand side and only new (old) variables on the right hand side, as in
{x = xi+eta, y = xi-eta}; # the transformation
d) An indication of the new variables is required when it is not obvious, and it must then be given as a list. For example, in the transformation above, there are only two variables on the right hand sides of a set of two transformation equations; dchange assumes that the new variables are those appearing on the right hand side. If, however, these numbers are not equal, one must indicate which are the new variables:
[xi, eta] (or) [eta, xi]
Since in Maple f⁡ξ,η≠f⁡η,ξ, the order given to the new variables in the list above may be relevant.
e) If only one set of transformation equations is given, then it must contain the new variables on the right hand side.
The dchange command has two different criteria for changing variables. The first one, applied by default to "known" functions (functions with a differentiation rule known to Maple), changes the functional dependence using the explicit relation between the old and new variables. For example, if the transformation is given by
{x = xi+eta, y = xi-eta},
then dchange will transform known functions as follows:
cos(x*y) -> cos( (xi+eta)*(xi-eta) )
The second criterion, applied by default to "unknown" functions (functions whose differentiation rule is unknown to Maple), changes the functional dependence taking into account only the implicit relation between the old and new variables. For example, with the transformation above, the dchange command will transform any "unknown" function (say f) as in:
f(x, y) -> f(xi, eta)
It is possible to change these defaults and force dchange to apply a different criterion to a given function, by specifying it using the 'known' or 'unknown' options.
When a function depends on more variables than those which are being changed, the variables not entering the process are all put to the right. For example, the transformation above would take f(x, y, z, t) -> f(xi, eta, z, t).
In addition, you can indicate the use of any standard or special procedure for the automatic simplification of the resulting expression. This is useful when nonobvious mathematical equivalencies must be taken into account, or just to make the resulting expression more compact. The simplification is applied not only to the final result but also to all inner intermediate results.
Special rules are applied to multiple integrals, since for definite ones, the mapping of the old integration domain into the new one may present additional complications. The command could fail to determine the (perhaps functional) range for the new variables defining the new integration domain. In these cases, a special warning message is displayed and only the functional dependence of the new ranges is determined.
Optional arguments can be given alone or in conjunction, and in any order.
This function is part of the PDEtools package, and so it can be used in the form dchange(..) only after executing the command with(PDEtools). However, it can always be accessed through the long form of the command by using PDEtools[dchange](..).
1. Maple can reduce a PDE to a quadrature:
with⁡PDEtools:
PDE≔diff⁡f⁡x,y,x+g⁡x,y+diff⁡f⁡x,y,y=0
PDE≔∂∂xf⁡x,y+g⁡x,y+∂∂yf⁡x,y=0
tr≔x=r+s,y=r−s:
dchange⁡tr,PDE
∂∂rf⁡r,s+g⁡r,s=0
Tell Maple you are looking at g as a "known" function:
dchange⁡tr,PDE,known=g
∂∂rf⁡r,s+g⁡r+s,r−s=0
2. The next example demonstrates the reduction of the number of independent variables inside a differential operator:
L≔f→x⁢∂∂y⁢f−y⁢∂∂x⁢f
tr≔x=s⁢r12,y=s⁢1−r12
tr≔x=s⁢r,y=s⁢1−r
The transformation tr reduces the number of differentiation variables:
`L'`=dchange⁡tr,L,simplify
L'=f→−2⁢r⁢1−r⁢∂∂r⁢f
This example demonstrates the use of the differential operator d/dy alone:
dy≔f→∂∂y⁢f
dchange⁡tr,dy,normal
f→−1−r⁢2⁢∂∂r⁢f⁢r−∂∂s⁢f⁢ss
3. Confirm that the ordinary differential equation, ODE,
macro⁡ys=`y*`,xs=`x*`
ys,xs
ODE≔−y⁡x+x⁢diff⁡y⁡x,xx+y⁡x⁢diff⁡y⁡x,x=H⁡sqrt⁡x2+y⁡x2
ODE≔−y⁡x+x⁢ⅆⅆxy⁡xx+y⁡x⁢ⅆⅆxy⁡x=H⁡x2+y⁡x2
is invariant (the most general invariant first ODE) under the one-parameter rotation group of transformations
tr≔x=ys⁡xs⁢sin⁡α+xs⁢cos⁡α,y⁡x=cos⁡α⁢ys⁡xs−sin⁡α⁢xs:
itr≔simplify⁡solve⁡tr,xs,ys⁡xs,trig
itr≔x*=−y⁡x⁢sin⁡α+cos⁡α⁢x,y*⁡x*=y⁡x⁢cos⁡α+sin⁡α⁢x
The result of changing variables does not change the form of ODE:
go≔dchange⁡tr,ODE,ys⁡xs,xs,u↦simplify⁡u,trig
go≔x*⁢ⅆⅆx*y*⁡x*−y*⁡x*y*⁡x*⁢ⅆⅆx*y*⁡x*+x*=H⁡y*⁡x*2+x*2
back≔dchange⁡itr,go,x,y⁡x,u↦simplify⁡u,trig
back≔−y⁡x+x⁢ⅆⅆxy⁡xx+y⁡x⁢ⅆⅆxy⁡x=H⁡x2+y⁡x2
4. Maple can have a change of variables in integro-differential expressions:
II≔Int⁡Int⁡diff⁡f⁡x,y,x⁢h⁡x2+y212,x=0..1,y=0..1
II≔∫01∫01∂∂xf⁡x,y⁢h⁡x2+y2ⅆxⅆy
tr≔x=s⁢r12,y=s⁢1−r12:
dchange⁡tr,II,simplify
−∫_α_βh⁡s⁢s⁢∫_lr⁡s_ur⁡s2⁢∂∂rf⁡r,s⁢r−∂∂sf⁡r,s⁢s−2⁢∂∂rf⁡r,s⁢rr⁢−1+rⅆrsⅆs2
5. Here the change of variables introduces elliptic integrals.
PDE≔sqrt⁡1−sin⁡s2⁢k2⁢diff⁡f⁡u,v,r,s,s=G⁡u,v,r,s
PDE≔1−sin⁡s2⁢k2⁢∂∂sf⁡u,v,r,s=G⁡u,v,r,s
Below, w represents the elliptic integral of the first kind. The change of variables eliminates s and introduces w:
itr≔w=Int⁡1sqrt⁡1−sin⁡r2⁢k2,r=0..s
itr≔w=∫0s11−sin⁡r2⁢k2ⅆr
s is the amplitude of w:
tr≔s=am⁡w:
Since the system does not know about 'am' (here the amplitude of the elliptic integral), the use of only tr leads to
dchange⁡tr,PDE,w
1−sin⁡am⁡w2⁢k2⁢∂∂wf⁡w,u,v,rⅆⅆwam⁡w=G⁡w,u,v,r
whereas the additional indication of the inverse transformation, itr, significantly improves this result:
dchange⁡tr,PDE,itr,simplify
∂∂wf⁡w,u,v,r=G⁡w,u,v,r
See Also
pdsolve
Download Help Document