>


For ease of reading, these functions are declared to be displayed in a compact way. Also, derivatives are displayed as indexed objects.
>


 (1) 
Consider the following nonpolynomial expression.
>


 (2) 
A differential polynomial system (DPS) equivalent to is given by:
>


 (3) 
To view the expression above in the usual Maple format, use the macro show.
>


 (4) 
A sequence of three lists is returned. The first list contains the Equations of the problem, the second list contains the Inequations, and the third list contains the backsubstitution equations, specifying which nonpolynomial object is represented by each auxiliary function .
Concerning the lists of equations and inequations, two remarks are in order. First, the DPS returned by dpolyform represents an expression a bit more general than the given input. For example, to exactly represent polynomially, initial conditions need to be introduced for the DPS returned by dpolyform. Second, while performing differential elimination, or various other manipulations on the DPS returned, Maple solves a system slightly more general than the input. However, in the solution, all the functions , , ... are replaced by the restricted objects they represent (the back substitution equations returned by dpolyform) to produce a valid solution.
To obtain a DPS satisfied by which, in turn, only involves the original unknowns (no , , ...), call dpolyform with the optional argument 'no_Fn'. In such a case, the output has the same format as that produced by the casesplit command.
>


 (5) 
As in casesplit, the '&where' in the display above is obtained using a `print/foo` mechanism. The real structure of this result is of the form `casesplit/ans`( [ equations ], [ inequations ] ), and can be seen by using:
>


`casesplit/ans`([diff(g(x,y),x) = 2*g(x,y)^2+2, diff(g(x,y),y)^2 = 1/4/y*g(x,y)^4+1/2/y*g(x,y)^2+1/4/y],[g(x,y)^21 <> 0, diff(g(x,y),y) <> 0])
 
To verify that this nonlinear PDE system
>


 (6) 
for is satisfied by , use the Maple pdetest command.
>


 (7) 
>


 (8) 
Note that, while the solution of the given expression is included in the solution of the DP output by dpolyform, the opposite is not true. The solution of the DP problem is slightly more general. It contains an arbitrary constant.
>


 (9) 
Moreover, due to the nonlinear character of this example, if, in , one excludes the inequation returned by dpolyform, then also admits singular solutions
>


 (10) 
>


 (11) 
and is not included in the singular solutions .
The dpolyform routine can handle systems of equations containing most functions known to Maple, including fractional or abstract powers, as well as arbitrary compositions of these objects. A useful side effect of this is that, by asking for the DP form of a special function, one receives the polynomial differential equation it satisfies. For example,
>


 (12) 
>


 (13) 
>


 (14) 
For the following, see also hypergeom and DEtools[hyperode].
>


 (15) 
>


 (16) 
In the input above, means that expressed as a function of is wanted. If not given, this ordering is the one casesplit finds simpler.
For the following, see also MeijerG and DEtools[hyperode].
>


 (17) 
>


 (18) 
In the input above, 'y(x)' means that in the output is expressed as a function of the other unknowns of the system (here ). This is equivalent to giving or .
It is evident from the last two results by dpolyform that, for some values of a, b, c, d, and f(x), there is a relation between the hypergeometric and the more general MeijerG functions. This relation is actually given by:
>


 (19) 
More complicated cases are also handled. For example, the complete Elliptic integral of the third kind (see EllipticPi)
>


 (20) 
is represented in DP form, not by an ODE, but by a PDE system.
>


 (21) 
The dpolyform command can handle expressions involving more abstract representations as DESol, RootOf or @@. For example, consider the inverse of the dawson function.
>


 (22) 
The differential polynomial representation of this object is an Abel equation of the 2nd kind which happens to admit symmetries separable by product.
>


 (23) 
>


 (24) 
By using dpolyform to obtain the differential equation satisfied by a given expression, it is possible to establish identities for special functions, or relations between them and simpler Liouvillian (for example, exponential and trigonometric) functions. As an example illustrating the mechanism, consider as the following hypergeometric function.
>


 (25) 
A polynomial (in this case linear) ODE satisfied by is given by:
>


 (26) 
The ODE above also has a solution in terms of Liouvillian functions, which can be obtained by using Kovacic's algorithm. See DEtools[kovacicsols].
>


 (27) 
>


 (28) 
This means that the hypergeometric function appearing in is equal to the righthand side of for some particular values of _C1 and _C2. The actual values of _C1 and _C2 can be obtained by expanding in series. For that purpose, first build an expression equating to the solution of the ODE.
>


 (29) 
Next, compute the series of the righthand side. In this case, it suffices to compute it up to order .
>


 (30) 
Now, to solve for _C1 and _C2, build a system with the coefficients of .
>


 (31) 
Finally, produce:
>


 (32) 
It can be proved that this solution for _C1 and _C2 is independent of the order of the series. This is always the case when dealing with linear ODEs provided that the system "sys" includes all the unknowns _Cn. At these values of _C1 and _C2, our equation relating hypergeom([1],[2],2*I*x) with becomes
>


 (33) 
from where the hypergeometric function can be isolated, resulting in the desired identity.
>


 (34) 
In this easy case, this relation can be verified by means of a black box, tablelookup approach by using:
>


 (35) 
>


 (36) 
The approach discussed above, however, does not rely on table lookups and can be used in general, provided that Maple can compute the series of the expressions involved. When the righthand side of the departing expression ('a3' in the example above) is an integral, this approach is useful for computing its exact value when the integral can be expanded in series and its differential polynomial form can be solved exactly. In the same way, the approach can be used to compute identities between different special functions by directing dsolve to solve the DP problem by using different solving methods, for example, first by using method 'hypergeometric' or 'MeijerG', and then solving the same problem by using method 'Bessel', 'Whittaker', or 'elliptic'.
Finally, it is possible to use dpolyform to solve algebraic (nondifferential) systems as well. As an example of this, consider the following nonpolynomial, nondifferential system of equations for the unknowns .
>


 (37) 
>


 (38) 
Due to the nontrivial nonpolynomial expressions involved, the Maple solve command in previous releases failed to solve this problem for and . By using dpolyform you can solve as follows. First compute a differential polynomial form for .
>


 (39) 
>


 (40) 
Second, solve using dsolve
>


 (41) 
This solution to includes the solution to sys for some particular values of the integration constants involved. To determine , substitute the above into sys.
>


 (42) 
The next step is to solve for . We must expand in a series. It is sufficient to find a few terms from which you can get a solution. For computational reasons, use three intermediate steps.
>


>


>


 (43) 
Now solve for :
>


 (44) 
>


 (45) 
where, by convention, is an integer (see solve). Finally, the solution above leads to the solution for the nondifferential , by evaluating sol_DP_sys at these values of the integration constants. To see this, take for instance the solution containing the imaginary unit
>


 (46) 
>


 (47) 
This solution can be verified by substituting into .
>


 (48) 
>


 (49) 