PDEtools[casesplit] - split into cases and sequentially decouple a system of equations taking into account its integrability conditions
|
Calling Sequence
|
|
casesplit(sys, optional_1, optional_2,...)
|
|
Parameters
|
|
sys
|
-
|
single DE, or list or set of DEs; any system of differential equations
|
optional_1, optional_2, ...
|
-
|
(optional) arguments can be given in any order and are described as follows
|
ranking
|
-
|
list or set of solving variables represented by names or functions, or list or set of them
|
caseplot
|
-
|
indicates that in addition to the splitting into cases a graphical representation of the splitting is to be plotted
|
ivars={y1, y2, ...}
|
-
|
indicates that {y1, y2,...} are independent variables regardless of whether they appear in the unknowns of the system
|
ivars=[y1, y2, ...]
|
-
|
the right-hand side is a list; indicates the ranking ordering for the independent variables
|
lex
|
-
|
useful to produce ODEs from PDEs, indicates the use of an elimination ranking for the independent variables instead of the default orderly one
|
lex(f(y1, y2...)
|
-
|
indicates the elimination ranking ordering of the independent variables to be as in f
|
parameters=P
|
-
|
P is a list or set of names or functions that are solving variables with lower priority than any other variable
|
fast=boolean
|
-
|
if boolean = true then run only one round of computations; if false run always two, otherwise let casesplit decide
|
singsol=false
|
-
|
avoid the computation of the singular cases when the system is nonlinear
|
arbitrary=A
|
-
|
avoid splitting into cases with respect to elements of A, where A is a list or set of names or functions
|
ctl=N
|
-
|
compute with a timelimit of N seconds per case
|
mindim=N
|
-
|
discard cases with solution space of dimension less than N
|
rankingused = ...
|
-
|
the right-hand side is a name that will be assigned the ranking used for the unknowns of the system
|
ivarsused = ...
|
-
|
the right-hand side is a name that will be assigned the independent variables of the system with the ordering they were ranked
|
rif
|
-
|
default, force splitting by using the Rif subpackage of DEtools
|
diffalg
|
-
|
force splitting by using the DifferentialAlgebra package
|
|
|
|
|
Description
|
|
•
|
The casesplit function receives one DE, or a set or a list of DEs (it is also possible to include inequations and non-differential equations) and splits the system into regular systems associated with different cases. The union of the non-singular solutions of these regular systems returned is equal to the full set of solutions, including the singular ones, of the original input system. Each regular system automatically satisfies all the integrability conditions. The splitting into cases is performed by using the Rif subpackage of DEtools (default), or using the DifferentialAlgebra package when the keyword 'diffalg' is given as an optional argument. casesplit also works with anticommutative variables set using the Physics package using the approach explained in PerformOnAnticommutativeSystem.
|
•
|
The casesplit command is useful for studying the different cases of a given DE system, uncoupling the system in different ways using different orderings for the solving variables (rankings), and determining whether the system is inconsistent. The casesplit command can also be used to remove redundancies and to make the system complete, including simplifying it by using all its integrability conditions. All these tasks are automatically performed each time casesplit is invoked.
|
•
|
Ranking is a fundamental concept related to the splitting process performed through casesplit. A ranking is basically an ordering of the variables of the problem (herein called solving variables) in the form of a list of functions or symbol variables, as in (one can also specify functions by using only their names as in ). Different rankings imply different uncoupling orderings and, hence, different manners of splitting and uncoupling the DE system (see checkrank, DifferentialAlgebra[Tools][Display], and the examples below).
|
|
Input and Output
|
|
•
|
The first argument sys can be one DE, or a set or a list of DEs, possibly including inequations and non-differential equations (such as algebraic constraints). Equations are entered by using , or expr1. In this case it is assumed that expr1 = 0. Inequations are entered by using .
|
•
|
The output of casesplit is a sequence of expressions representing the different cases (possibly only one) and corresponding equations and inequations (these are the ones returned by the corresponding Equations and Inequations commands of DifferentialAlgebra). Each case is returned as a function of two operands and displayed as . Both operands are lists. This printing is obtained, however, by using a print/foo mechanism, and the true structure of each returned case is a function `casesplit/ans`( [ eq1, eq2, ...], [ ineq1 <> 0, ineq2 <> 0, ...] ).
|
•
|
The actual splitting of a system obtained when calling casesplit is basically computed through various calls to different commands of the DifferentialAlgebra package, or optionally the DEtools[Rif] package. These are the two Maple differential elimination packages.
|
•
|
Apart from simplifying the steps required by a direct use of DifferentialAlgebra, casesplit radically extends the domain of computation of DifferentialAlgebra or DEtools[Rif]. Concretely, casesplit can split a system into regular cases even when this system contains non-polynomial objects, such as fractional or abstract powers, most Maple known functions (for example, exponentials, logarithms, trigonometric, and special functions) and also any arbitrary composition of these non-polynomial objects, for example, .
|
|
|
Optional arguments
|
|
•
|
All arguments after the first one are optional and can be included in any order.
|
•
|
When the solving variables are not specified, casesplit takes all unknown functions found in the DE system as solving variables, and uses its own heuristic methods to determine what could be the best uncoupling ordering for the given system. However, it is possible to specify a ranking, which indicates the solving variables and their order. When the ranking to be specified involves only one variable, it can be given as this variable, or its name, for example, for . In all cases the ranking can be specified as a list or a set of solving variables, functions can be indicated by only their names, and this set or list can include 'symbol' solving variables (equivalent to functions with all derivatives equal to zero).
|
•
|
Using standard terminology, a ranking as in - also called lexicographic or elimination ranking - leads to a splitting using a lexicographic ordering. When a ranking is given as a nested list, for example , the splitting is performed by using a total degree ordering. These rankings are also called total degree or orderly rankings. Total degree rankings, however, generally do not result in the uncoupling of the given system. They simplify the system by using integrability conditions, and so check for inconsistencies as well as lead to a version of the system with the lowest differential order. This usually leads to faster computations than when using lexicographic ordering. To understand the meaning associated with a given ranking, use the checkrank or DifferentialAlgebra[Tools][Display] commands. Input rankings in casesplit have exactly the same meaning they have in calls to commands of the DifferentialAlgebra package.
|
•
|
When the ranking is not specified, you can see the ranking used by setting infolevel[casesplit] := 2. Setting this variable to causes the display of the input sent to RosenfeldGroebner or DEtools[rifsimp], as well.
|
•
|
The independent variables of a given system are determined by default as the variables on which the unknown functions of the system depend. However, there may be cases in which other variables, not present in the unknown functions of the system, are also independent variables of the problem. These extra independent variables can be indicated using the ivars = {...} optional argument. In such a case, these variables are added to those determined as the independent variables of the problem. This is useful, for example, when the unknowns of the system depend - say - on x, y, but the equations involve - say - z, and you are not interested in solutions depending on z.
|
•
|
By default, the solving ordering for the independent variables of the system is automatically determined by casesplit, such that lower order differentiation variables are ranked lower. Alternatively, this ordering can be enforced to be anyone using the optional argument ivars = [...], specifying its right-hand side as a list with the desired ordering, leading in most of the cases to slight differences in the output (see DifferentialAlgebra[Tools][Display]).
|
•
|
By default, the ranking used with respect to the independent variables is of orderly type (see paragraphs above). To specify an elimination lexicographical ranking add the keyword anywhere in the calling sequence. Combining this option with the ivars = [...] option (right-hand side as a list) is useful to generate ODEs from PDE systems when that is possible. The ODEs appearing in the output are the consequence of using an elimination ranking for the independent variables. When ivars = [...] is not given, but lex is given, the elimination raking is set with the ordering for the independent variables chosen by casesplit; or when lex(f) is given, where f is an unknown of the system, the ordering used for ranking the independent variables will be that of the function f.
|
•
|
By default, all unknown functions found in the system and not indicated in the ranking are considered solving variables "with less priority", and are automatically inserted at the end of the ranking. Note however that symbol variables found in the system require an explicit declaration in the ranking to be considered as "solving variables". "Solving variables" with less priority can also be indicated using the optional argument parameters={...} where the right-hand side can also be a list.
|
•
|
In the case of DE systems, the default strategy of casesplit is to solve the system in two rounds. In the first round, a simpler ranking is used to express the more differentiated solving variables with respect to the other ones. Typically this ranking is built as , and relies on a faster "total degree" process. In the second round, each of the systems (equations and inequations) obtained in the first round are processed separately, but this time with the ranking given by the user (or set by casesplit if no ranking is given). When the optional argument 'fast' is given, casesplit processes the system in only one round. In such a case, if the ranking is given it is used. Otherwise, the ranking is set as (that is, total degree ordering) and usually does not lead to an uncoupling of the system.
|
•
|
By default, casesplit splits a nonlinear problem into all the related (perhaps only one) regular cases. This set of regular cases can also be understood as consisting of the main case (general case) plus all the possible singular cases. To avoid spending time in computing these singular cases, one can use the singsol=false optional argument, leading to the computation of only the general case.
|
•
|
By using the optional argument arbitrary=A, where A is a list or set of names or functions, one can force casesplit to avoid considering these functions as solving variables and so avoid splitting into cases with respect to them. This option is quite useful for computations in which the value of some unknown functions must remain arbitrary. It also typically reduces the computation time significantly.
|
•
|
By default, casesplit splits a problem into cases regardless of the time required to compute each case. There are problems, however, for which this default is not practical since some of the cases would take too much time to compute. For these cases, use the ctl=N optional argument to impose a timelimit of N seconds per case, at the cost of missing the output of cases requiring more than N seconds to be computed.
|
•
|
The optional argument mindim=N is useful when we know, in advance, that we are not interested in cases in which the solution space has dimension less than N. This option saves computing time.
|
•
|
If rankingused = .. is passed as argument, where the right-hand side is assignable (e.g., a name), the ranking used for the unknowns will be assigned to that right-hand side.
|
•
|
If ivarsused = .. is passed as argument, where the right-hand side is assignable (e.g., a name), the independent variables of the system, with the ordering they were ranked, will be assigned to that right-hand side.
|
•
|
By default, casesplit makes use of the Rif subpackage of DEtools. In most cases, however, it is possible to perform the same computations by using the DifferentialAlgebra package instead of Rif, by giving the extra argument diffalg. Any of the following optional arguments imply on computations which casesplit can only run using Rif: singsol=false, arbitrary, ctl=N.
|
|
|
|
Examples
|
|
The casesplit routine can be used for many different purposes. These examples are organized as follows: first, some typical situations; then, three worked examples in the framework of integrating factors and symmetries for second order ODEs; and finally, an illustration of how different rankings can be used to obtain different results in a DE system with many variables.
>
|
|
>
|
|
For convenience, first declare some functions of to be displayed using only their names (for example, as ), and as the prime variable (see PDEtools[declare]).
>
|
|
| (1) |
The splitting of a single nonlinear ODE into three cases (two of them related to singular solutions) is illustrated here.
>
|
|
| (2) |
>
|
|
| (3) |
To see a graphical representation of this splitting use the caseplot option
>
|
|
| (4) |
To identify which of these cases lead to the singular solutions, it suffices to note that singular solutions depend on fewer arbitrary constants, that is, they are solutions to ODEs of lower differential order. If there is only one input equation, it can be given directly (no braces or square brackets are required) and there is no need for a ranking specification.
When there are more variables, the ranking given can lead to different regular systems. For the following example, the ranking was chosen by casesplit's heuristics.
>
|
|
| (5) |
If infolevel is set to a greater integer (possible settings are 1 through 5), more detailed information about the computation method is displayed.
>
|
|
| (6) |
>
|
|
| (7) |
Here, the results of the other possible ranking, , are shown.
>
|
|
| (8) |
This also shows that different rankings may lead to a different number of cases. However, the union of the set of solutions to each case is always equal to the solution to the original problem independent of the ranking used.
The uncoupling of systems with many variables is a more difficult problem. In some cases, as in the following ODE system, the uncoupling ordering determined by casesplit succeeds.
>
|
|
| (9) |
>
|
|
| (10) |
In the answer above, we see from the displayed information (userinfo) that the ranking chosen by casesplit's heuristics was . This means that each returned case has expressed in terms of , then in terms of , in terms of and, eventually, a condition on alone. This is the case for all input systems provided that they are not subdetermined (for instance, too many functions for too few equations). Regarding the functions and displayed in the userinfo, they were introduced to transform the non-polynomial system into a polynomial one by extending the system with auxiliary functions and and related auxiliary equations. They are removed before returning the answer. To see the polynomial version of the problem actually processed use the dpolyform command.
It is important to remember that, depending on the input system, the ranking chosen by casesplit heuristics may not be the best one. It could, for example, lead to an uncoupling process with too many large intermediate equations. In such a case, the user's suggestion in the form of a different ranking may solve the problem.
In other cases, independent of the ranking, the differential elimination process may be to expensive in time. For these cases one can use the ctl=N optional argument to impose a timelimit of seconds per case, at the cost of missing the output of cases requiring more time to compute.
A PDE example where we indicate that 'f(x,y,z)' is our solving variable. Hence, and are viewed as function parameters of the problem.
>
|
|
| (11) |
>
|
|
| (12) |
The following is a PDE system which is inconsistent.
>
|
|
| (13) |
>
|
|
Warning: System is inconsistent
| |
A series of worked examples follows.
Worked example I
>
|
|
| (14) |
>
|
|
| (15) |
Show that the ode[3] has no integrating factors depending on less than three variables.
There are three possible cases to consider: (x,y), (x,y'), and (y,y'). Starting with (x,y), we first set the PDE which must be satisfied by this integrating factor (see odepde).
>
|
|
| (16) |
Now, noting that the PDE above is polynomial in and (represented by and , respectively), take the corresponding coefficients and set each one to zero to obtain a PDE system for (x,y). These tasks (setting the determining PDE above and splitting it into a system by setting each coefficient of equal to zero) are automatically performed by gensys.
>
|
|
| (17) |
Taking into account the integrability conditions implicit in the system above, this system simplifies to the following.
>
|
|
| (18) |
This shows that there is no solution other than the trivial = 0.
For the case (x,y'):
>
|
|
| (19) |
>
|
|
| (20) |
So, there is no solution of the form (x,y'). Finally, for (y,y'):
>
|
|
| (21) |
>
|
|
| (22) |
From these three results, we conclude that ode[3] has no integrating factors depending on only two variables.
Worked example II
Show that ode[4] has only one point symmetry, .
>
|
|
| (23) |
First, set up the PDE system for the symmetry (the infinitesimal symmetry generators and ). Again, this can be done by using odepde to obtain the determining PDE and then splitting it by taking coefficients or in one step by using gensys.
>
|
|
| (24) |
>
|
|
| (25) |
The system above has only the solution , which is equivalent to .
Worked example III
>
|
|
| (26) |
Determine the conditions on such that ode[5] has point symmetries with both infinitesimals different from zero.
First, set up the determining PDE system for the infinitesimals and .
>
|
|
| (27) |
Note that the dependent variable is also specified. Otherwise, gensys complains since ode[5] contains derivatives of both and , and it cannot determine the dependent variable of the problem. could be specified as the second argument as well. Now state, using inequations, that both infinitesimals should be different from zero.
>
|
|
| (28) |
Next, run casesplit. In doing so, different rankings could lead to what is wanted. Use to solve for as functions of , plus separated extra conditions on alone (these are the conditions we want). When solving for , do not uncouple from . This uncoupling is irrelevant since it would take more time and resources to be computed, and only the conditions on are wanted.
>
|
|
| (29) |
In the answer above, we see three systems, each one associated to different conditions on , and both and expressed in terms of each other and .
The last example illustrates the use of different rankings. Consider the following PDE system.
>
|
|
| (30) |
You can assign the ranking for the unknowns and/or the ordering used for the independent variables by passing the optional arguments rankingused = R and/or ivarsued = ii, where the right-hand sides, R and ii, can actually be any assignable objects. For example, discarding the singular cases for simplicity, the triangularization of this system and ranking and ordering of independent variables used for that are:
>
|
|
| (31) |
>
|
|
| (32) |
Suppose however that you are interested in an answer expressing , , and in terms of and , as well as some conditions on and is wanted. Then, the corresponding ranking is:
>
|
|
| (33) |
If, in addition, these conditions on and expressed with as a function of , as well as a condition involving alone, are wanted, then the ranking would be . If, moreover, as a function of and is wanted, the ranking would be . The ranking also works, but in general, when asking for "more uncoupling", the time and memory spent is greater. For the purpose assumed in this example, is the least expensive ranking leading to what is requested, while is the most expensive one.
To see what the specified ranking represents more formally, one can query the diffalg[print_ranking] command as follows. Define the differential ring of the problem and then issue the query.
>
|
|
| (34) |
>
|
|
In lists, leftmost elements are greater than rightmost ones.
The derivatives of [mu, A, B] are ordered by grlexA:
_U [tau] > _V [phi] when
|tau| > |phi| or
|tau| = |phi| and _U > _V w.r.t. the list of indeterminates or
|tau| = |phi| and _U = _V and tau > phi w.r.t. [x, y]
Any derivative of [mu, A, B] is greater than any derivative of [F, H]
The derivatives of [F, H] are ordered by grlexA.
| |
casesplit also works with anticommutative variables, using the approach explained in PerformOnAnticommutativeSystem.
>
|
|
Set first and as suffixes for variables of type/anticommutative (see Setup)
>
|
|
| (35) |
A PDE system example with one unknown anticommutative function of four variables, two commutative and two anticommutative; to avoid redundant typing in the input that follows and redundant display of information on the screen, use PDEtools:-declare, and PDEtools:-diff_table, that also handles anticommutative variables by automatically using Physics:-diff when Physics is loaded
>
|
|
| (36) |
>
|
|
Now we can enter derivatives directly as the function's name indexed by the differentiation variables and see the display the same way; two PDEs
>
|
|
| (37) |
>
|
|
| (38) |
The simplification of this system taking into account its integrability conditions
>
|
|
| (39) |
|
|
See Also
|
|
DEtools, DEtools,checkrank, DEtools,gensys, DEtools,Lie, DEtools,odepde, DEtools,Rif, DEtools,rifsimp, DEtools[rifsimp], DifferentialAlgebra, DifferentialAlgebra[DifferentialRing], DifferentialAlgebra[Equations], DifferentialAlgebra[Inequations], DifferentialAlgebra[RosenfeldGroebner], DifferentialAlgebra[Tools][Display], gensys, infolevel, PDEtools, PDEtools[declare], PDEtools[dpolyform], PerformOnAnticommutativeSystem, Physics, print, Setup, userinfo
|
|