DifferentialAlgebra[DifferentialRing]  constructs a differential polynomial ring with a ranking for the dependent and independent variables

Calling Sequence


DifferentialRing (blocks = [...], derivations = [...], arbitrary = [...])
DifferentialRing (R, blocks = [...], derivations = [...], arbitrary = [...])


Parameters


blocks = [...]



the righthandside is a list of dependent variables, possibly including sublists, representing a ranking for them

derivations = [...]



the righthandside is a list of independent variables representing a ranking for them

arbitrary = [...]



the righthandside is a list of dependent variables, that are supposed to be arbitrary, that is, algebraically independent functions

R



a differential polynomial ring or a differential ideal; when given, any optional specification of blocks, derivations or arbitrary replaces the one found in R

additionally



when R is a differential ring, and additionally is passed, any optional specification of blocks, derivations or arbitrary gets added to the corresponding specification found in R

NOTE



when the list on the righthandside of blocks, derivations or arbitrary contains a single element, this righthandside can be the element itself, without enclosing it within a list.





Description


•

The function call DifferentialRing (derivations = ..., blocks = ..., arbitrary = [...]) constructs and returns a differential polynomial ring, that is a ranking for the dependent and independent variables, possibly specifying arbitrary objects that extend the coefficient field.

–

The righthandside of blocks = [...] is a list of the dependent variables, possibly including sublists of them; only one level of nested sublists is allowed. In the context of a DE system, these dependent variables typically represent the solving variables.

–

The righthandside of derivations = [...] is a list of independent variables specifying the possible dependency of the dependent variables.

–

The righthandside of arbitrary = [...] is a list of algebraically independent arbitrary objects; these can be dependent variables (functions of one or many variables specified in derivations) or other variables (not those specified in derivations). In the context of a DE system, these arbitrary objects typically represent nonsolving variables that parameterize the system and its solutions.

•

When the DE system to be studied, for example using the RosenfeldGroebner command, will be given in standard Maple function notation, that is with the dependency of functions explicit, then passing the dependent variables to DifferentialRing by giving only their names is naturally simpler. When tackling the DE system, the dependency for each dependent variable will be the one found in the DE system.

•

Passing the dependent variables to DifferentialRing in function notation is relevant only when some of the dependent variables do not depend on all the independent variables specified in derivations and the DE system to be studied will be given in jet notation, that is with the dependency of functions not made explicit. In this case, when tackling the DE system with RosenfeldGroebner or other DifferentialAlgebra commands, the dependency will be that explicitly specified in blocks = ... and arbitrary = ..., and for each dependent variable in these two lists indicated without dependency, as in , its dependency will be taken to be the one specified in derivations.

•

DifferentialRing can also be used to construct a new differential ring from a given one, by changing any of the blocks, derivations or arbitrary parts of it. For this purpose the first argument should be a differential ring, or a differential ideal (for instance returned by RosenfeldGroebner) from which the embedded differential ring is used as a departure point to produce the new differential ring. Note: If additionally is also passed as an argument, any optional specification of blocks, derivations, or arbitrary is added to and not replaced by the corresponding specification found in R.


Rankings


•

Together, the lists blocks and derivations provide the ranking of R, that is, an ordering for the derivatives of the dependent variables with respect to the independent variables. In brief, the elements in blocks (dependent variables or sublists of them) are ranked between each other using an elimination raking and those within a sublist are ranked used an orderly ranking.

•

An elimination ranking is one where derivatives of leftmost dependent variables, or of all the dependent variables in a leftmost sublist within blocks, rank higher than derivatives of variables to their right. An orderly ranking is one where derivatives of higher differential order rank higher than derivatives of lower differential order, and if the order is the same, then derivatives of leftmost variables rank higher. Hence for example if blocks = [u, [v, w]] and derivations = [x, t],

>

ring := DifferentialAlgebra:DifferentialRing(blocks = [u, [v, w]], derivations = [x, t]);

 (1) 

the list of second and first order derivatives

>

[u[t, t], u[x, x], u[t, x], v[t, t], v[x, x], v[t, x], w[t, t], w[x, x], w[t, x], u[t], u[x], v[t], v[x], w[t], w[x]];

 (2) 
>

DifferentialAlgebra:Tools:SortByRank((2), descending, ring);

 (3) 
•

When a system of differential polynomials is handled by DifferentialAlgebra commands, rankings are typically used to decide which functions and derivatives are expressed in terms of which other ones. When the system is nonlinear and handled by RosenfeldGroebner, taking into account the ranking will also frequently result in a splitting of the system into cases (differential chains), that then naturally depend on the ordering of variables within the ranking.


Typical useful rankings


•

When simplifying a DE system with respect to its integrability conditions one obtains a kind of normal form for the system, expressed with the lowest possible differential order, and automatically detects if the system is inconsistent (has no solution). For this purpose use an orderly ranking, for instance indicating blocks = [[u, v, w]].

•

When solving a coupled ODE system, to perform a chain resolution one needs the system in triangularized form, that is, containing one subsystem that involves only one variable, say , that subsystem is part of a larger subsystem that involves two variables, say and , and in turn that is part of the whole system that involves the three variables , and . To accomplish this triangularized form equivalent to having decoupled the system use an elimination ranking passing blocks = [u, v, w].



•

This command is part of the DifferentialAlgebra package. It can be called using the form DifferentialRing(...) after executing the command with(DifferentialAlgebra). It can also be directly called using the form DifferentialAlgebra[DifferentialRing](...).



Examples


In what follows the command DifferentialRing is illustrated with examples where not only the syntax but also the most common types of rankings are explained, in connection with the mathematical computations most frequently done using the DifferentialAlgebra package. The examples used are the same presented in the page for the RosenfeldGroebner command.
>


 (4) 
Prior to any computations with the DifferentialAlgebra package, the appropriate differential indeterminates (dependent variables) and derivation variables (independent variables) with the ranking for them must be defined with the command DifferentialRing as shown in the following examples.

Detection of inconsistencies in a differential system: orderly rankings



Consider the 3 following equations.

>


 (5) 
>


 (6) 
>


 (7) 

Before any manipulation of these equations, indicate the dependent and independent variables, and an ordering (ranking) for them variables all inside a list within a list, as in

>


 (8) 

Call now the RosenfeldGroebner to simplify the system taking into account all the integrability conditions implied in it

>


 (9) 


Solving ordinary differential systems: elimination ranking



To perform a chain resolution of a system of ordinary differential equations, use an elimination ranking. Consider the differential system defined by the following set of differential polynomials in the unknown functions .

>


 (10) 
>



To see these dependencies more clearly in the rewritten system use Equations command, which is an alternative to the Equations command.

>


 (11) 

In the result above we see two cases. The equations of the first case satisfying this elimination ranking mentioned are

>


 (12) 

The equations of the second case also satisfying the elimination ranking proposed are

>


 (13) 


Constrained systems: Orderly and mixed rankings


>


 (14) 
•

To find the lowest order equations vanishing on the zeros of the system modeling the pendulum and in particular all the algebraic constraints (that is, the equations of order ), use an orderly ranking, with all the dependent variables in a list within a list, as in .

>


>


 (15) 
>


 (16) 
>


 (17) 

The second component in the output of RosenfeldGroebner corresponds to the equilibria of the pendulum. From the first component of the output, it can be seen that the actual motion is described by two first order differential equations with a constraint: the solution depends on only two arbitrary constants.

>


 (18) 
>


 (19) 
>


 (20) 
>


 (21) 

Note here that the motion is given by a second order differential equation in . Then the Lagrange multiplier is given explicitly in terms of and its first derivative.



Solving partial differential system: lexicographic elimination ranking



To solve overdetermined systems of partial differential equations it is interesting to compute first the ordinary differential equations satisfied by the solutions of the system. For this purpose, a lexicographic ranking must be chosen. Consider the differential system defining the infinitesimal generators of the symmetry group of the Burgers equations.

>


 (22) 
>


 (23) 

Seek the ordinary differential equations with respect to satisfied by the solutions of this system using lex at the time of raking the variables, as in

>


 (24) 
>


 (25) 
>


 (26) 

You can change any of the pieces of information constituting a differential ring by passing the ring itself as the first argument, followed by any of the keywords blocks = ..., derivations = ..., parameters = ..., and so on, where the righthand sides specify the new information, or you can also add to the previous information by passing the keyword addditionally.

>


 (27) 
>


 (28) 
>


 (29) 
>


 (30) 
>


 (31) 
>


 (32) 
>


 (33) 

For more details see RosenfeldGroebner

