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

Online Help

All Products    Maple    MapleSim





determination of maximum dimensional subsystems of systems of PDE


Calling Sequence




Calling Sequence

maxdimsystems(system, maxdimvars)

maxdimsystems(system, maxdimvars, options)




list or set of ODE or PDE (may contain inequations)



list of the dependent variables used for the dimension count



(optional) sequence of options to control the behavior of maxdimsystems



The default output of maxdimsystems (modulo *** below) consists of the set of cases having maximal dimension in maxdimvars, where each member has the form:

[Solved = list, Constraint = list, Pivots = list, dimension = integer]


Solved is a list of the PDE which are in solved form with respect to their highest derivative (with respect to the given ranking of derivatives), Constraint is a list of the PDEs in the classvars (any dependent variables not in maxdimvars) which are nonlinear in their leading derivatives, Pivots is a list of the inequations in the classvars and/or maxdimvars, and dimension is the maximal degree of arbitrariness in maxdimvars (i.e. the number of arbitrary constants on which maxdimvars depends).


*** The result is valid provided that the Constraint and Pivots equations have a solution, and also that maxdimvars do not occur in the constraint equations. The user must check the first condition algebraically (e.g. see Groebner[Solve], and possibly DifferentialAlgebra). If the maxdimvars are present in the pivots, then the returned system will have lower dimension that indicated, and must be handled manually.


Each of the cases is in rifsimp form (a generalization of Gauss normal form to systems of PDE) and also contains a system of differential equations and inequations in the classvars characterizing the case.  In the same way that the Gauss normal form is determined by a ordering of variables, rifsimp form is determined by a ranking of derivatives.


The default ranking is determined by maxdimvars. It can be inferred by the application of checkrank, and always ranks the classvars and their derivatives lower than all maxdimvars.


The maximal cases can be determined in many applications where a complete analysis of all cases is not possible.  These cases are often the most interesting, with the richest properties, when compared to the relatively uninteresting (but often difficult to compute) lower dimensional cases.


The options for maxdimsystems consist of the output option (described below), and a subset of those for rifsimp, the main subroutine used by maxdimsystems. Of the subset of rifsimp options available, two that are often used are indep which specifies the independent variables, ezcriteria which controls the flow of equations from a fast (ultra-hog) setting (that can readily lead to memory explosion but sometimes faster calculations), to a conservative (one equation at a time) setting that can overcome some expression swell problems. The complete list is given by:

tosolve, indep, arbitrary, clean, fullclean

See rifsimp[options]

ezcriteria, faclimit

See rifsimp[adv_options]

mindim, pivselect

See rifsimp[cases]


See rifsimp[nonlinear]


Many rifsimp options are not supported by maxdimsystems as their use could produce misleading results. For example, the rifsimp option ctl=time, places a time limit on rifsimp case computations, and hence could cause maxdimsystems to miss the maximal case if it takes too long to compute. Conversely, specification of other options are not supported as they must have a specific value for the maxdimsystems command to function properly (for example, casesplit must always be on). Other unsupported rifsimp options include itl, stl, nopiv, unsolved, store, storeall, spawn, spoly, and casecount.


output = type


The output type can either be set (default) or rif. Note that set output is easier to read and manipulate, but cannot be used with the caseplot visualization tool. The rif output can be used with caseplot, but the output is somewhat more complicated, and is described in rifsimp[output]. Note that for the class of problems that maxdimsystems simplifies, many of the outputs from rifsimp described in the output page ( such as DiffConstraint and UnSolve) will never be present in the output.


The maxdimsystems command allows a subset of the rankings available for rifsimp. Specifically those rankings that are controlled by a partition of the dependent variables in maxdimvars, and those available by the order of the independent variables in indep. See rifsimp[ranking] and checkrank for an explanation of how to specify rankings based on these options.


The application of caseplot to the rif-form output of maxdimsystems with the second argument given as the maxdimvars displays the tree of maximal cases and their dimensions, also indicating which branches of the tree have less than maximal dimension.


Note that maxdimsystems is essentially a simplified version of the rifsimp interface that also has the ability to automatically determine the maximum finite dimensional cases or all infinite dimensional cases for a classification ODE/PDE system. If the dimension of the solution space is known, multiple conditions on the dimension of the solution space are needed, or much finer control of the computation is desired, then rifsimp could be used with the mindim option described in rifsimp[cases].




G.J. Reid and A.D. Wittkopf, "Determination of Maximal Symmetry Groups of Classes of Differential Equations", Proc. ISSAC 2000, pp.272-280


G.W. Bluman and S. Kumei, "Symmetries and Differential Equations", Springer-Verlag, vol. 81.



Algebraic systems can be examined with maxdimsystems




In the below example, inequations are given in the Pivots list, and the dimension is 2




This next example has a constraint on the classvars present in the result




In each of the above examples maxdimsystems picked out the maximum dimensional case. This is in contrast to rifsimp, with its casesplit option, which obtains all cases.

For the second example, computation with rifsimp using casesplit gives 2-d, 1-d and 0-d cases, of which the 2-d case is the maximal case from the above example.




from which the caseplot with initial data counts could be viewed by issuing the command:


One example of practical use of maxdimsystems is the determination of the forms of fy' (where fy' is not identically zero) for which the ode y''=fy' has the maximum dimension.







where the above symeq is an overdetermined system of PDE in the infinitesimal symmetries ξx,y,ηx,y.

So we compute the maximum dimensional case, which is not displayed as it is quite large:


















from which we see that we have one case, of dimension 8, and it occurs when the displayed ODE in f_y1 is satisfied. This classical result is also explored in the ISSAC Proc. article listed in the references (the primary reference for this command).

The timing above should be compared to the rifsimp full case analysis that takes significantly longer, and has a great number of lower dimensional cases:









Consider the nonlinear Heat equation




The overdetermined system for it's symmetries X,T,U is given by


At the same time as determining maximum dimensional cases, one can request, through a partitioning of the maxdimvars, that the dependent variables be ranked in a specific manner. To always isolate derivatives of Uu,t,x in terms of the other dependent variables, one could specify maxdimvars=[[U],[X,T]]. For this problem we would obtain




Alternatively we could try to obtain PDE only in Uu,t,x and the classifying function ku by an elimination ranking:




where you can see from the above that we have three PDE for Uu,t,x alone (which can be quite easily solved for Uu,t,x in terms of a function that is linear in x with coefficients as integrals in u depending on ku).

Both computations show that maximal group is of dimension 5, and occurs when ku satisfies k''=74k'2k. This is a known result (see the Bluman/Kumei reference).

In determining how a specific ranking will be used in a system, one should consult the checkrank help page.

The final example demonstrates how to find near-maximal cases, and how to obtain rif-style output. Say we want all cases having dimension 4 or greater, and we want rifsimp output (so we can display the information in a case plot). This can be done as follows:


rifanstable1=tableDiffConstraint=0=8ⅆ2ⅆu2ku2ku2xUu,t,x8ⅆ2ⅆu2kukuⅆⅆuku2xUu,t,x4ku2ⅆⅆukuxUu,t,xⅆ3ⅆu3ku+7ⅆⅆuku4xUu,t,x,UnClass=0=2ⅆ2ⅆu2ku2kuUu,t,xⅆ2ⅆu2kuⅆⅆuku2Uu,t,xkuⅆⅆukuUu,t,xⅆ3ⅆu3ku,Pivots=ⅆⅆuku0,dimension=3,status=free count fell below mindim,Solved=2x2Xu,t,x=ⅆⅆukuxUu,t,x2ku,uUu,t,x=Uu,t,xkuⅆ2ⅆu2kuⅆⅆuku2kuⅆⅆuku,tXu,t,x=xUu,t,x4kuⅆ2ⅆu2ku7ⅆⅆuku22ⅆⅆuku,tTu,t,x=2xXu,t,xkuUu,t,xⅆⅆukuku,Case=2ⅆ2ⅆu2ku2kuⅆ2ⅆu2kuⅆⅆuku2kuⅆⅆukuⅆ3ⅆu3ku0,Uu,t,x,2=tablePivots=4kuⅆ2ⅆu2ku+7ⅆⅆuku20,dimension=4,Solved=2x2Xu,t,x=0,uXu,t,x=0,uTu,t,x=0,uUu,t,x=Uu,t,xkuⅆ2ⅆu2kuⅆⅆuku2kuⅆⅆuku,tXu,t,x=0,tTu,t,x=2xXu,t,xkuUu,t,xⅆⅆukuku,tUu,t,x=0,xTu,t,x=0,xUu,t,x=0,ⅆ3ⅆu3ku=ⅆ2ⅆu2ku2kuⅆ2ⅆu2kuⅆⅆuku2kuⅆⅆuku,Case=2ⅆ2ⅆu2ku2kuⅆ2ⅆu2kuⅆⅆuku2kuⅆⅆukuⅆ3ⅆu3ku=0,Uu,t,x,4kuⅆ2ⅆu2ku+7ⅆⅆuku20,xUu,t,x,3=tablePivots=ⅆⅆuku0,dimension=5,Solved=2x2Xu,t,x=ⅆⅆukuxUu,t,x2ku,2x2Uu,t,x=0,uXu,t,x=0,uTu,t,x=0,uUu,t,x=3Uu,t,xⅆⅆuku4ku,tXu,t,x=0,tTu,t,x=2xXu,t,xkuUu,t,xⅆⅆukuku,tUu,t,x=0,xTu,t,x=0,ⅆ2ⅆu2ku=7ⅆⅆuku24ku,Case=2ⅆ2ⅆu2ku2kuⅆ2ⅆu2kuⅆⅆuku2kuⅆⅆukuⅆ3ⅆu3ku=0,Uu,t,x,4kuⅆ2ⅆu2ku+7ⅆⅆuku2=0,xUu,t,x,casecount=3


All cases where the initial data was smaller than the bound are tagged with a status of "free count fell below mindim". This calculation can then be displayed in a caseplot with the command:


See Also