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

Online Help

All Products    Maple    MapleSim


PDEtools

  

dpolyform

  

compute a differential polynomial form for a given system of non-polynomial equations

 

Calling Sequence

Parameters

Description

Examples

References

Calling Sequence

dpolyform(sys, no_Fn, opts)

Parameters

sys

-

single expression or an equation, or a set or list of them

no_Fn

-

(optional) specify that all auxiliary functions _Fn (n integer) introduced in the process are to be eliminated before outputting

opts

-

(optional) argument(s) accepted by the Maple casesplit command

Description

• 

The dpolyform function receives an equation or expression, or a set or list of them, containing some unknown functions of one or many variables, possibly containing non-polynomial objects (fractional powers, mathematical functions, etc.) and returns an equivalent differential polynomial (DP) system of equations.

• 

The DP returned is equivalent to the given system in that any solution (value of the unknown functions) of the input is also a solution of the output DP system. This DP returned is differential polynomial in that it is entirely polynomial in the unknowns and its derivatives, with coefficients entirely rational in the independent variables. In this sense, dpolyform has the concrete ability to compute differential polynomial representations for non-polynomial objects.

• 

The mathematical expressions dpolyform can represent in DP form include almost all the functions of the mathematical language, arbitrary compositions of them with the operations +,,^,@, including in that abstract powers, inverse functions constructed with @@, functions represented as ODE solutions using DESol, algebraic expressions represented using RootOf, integrals represented with Int, int or Intat, etc. The only exceptions are mathematical functions related to Zeta (e.g. Psi and GAMMA), not admitting a polynomial differential equation representation.

• 

This routine has enormous potential in that it permits the use of the existing methods for polynomial systems, for example, differential elimination (see, for example, DifferentialAlgebra, DEtools[Rif], or casesplit), to solve, or in general work with, non-polynomial systems in a systematic way.

• 

The dpolyform command can be used to also decouple non-polynomial systems of differential or algebraic equations (unlike the output of casesplit, the output of dpolyform is DP), or in the computation of identities for special functions. The dpolyform subroutines are used by the Maple dsolve, pdsolve and casesplit commands when solving ODE and PDE systems, in order to triangularize non-polynomial systems using techniques for polynomial ones.

• 

By default, dpolyform is expected to return rather fast, outputting a DP system equivalent to the input system, representing the non-polynomial objects by means of auxiliary functions _Fn... (n is an integer) which in turn satisfy DP equations. Thus, the output of dpolyform consists of three lists.

  

-  The first list contains DP equations of the form "DP_expression = 0".

  

- The second list consists of inequations of the form "DP_expression <> 0".

  

- The third list consists of 'back substitution equations', showing which non-polynomial object is represented by each auxiliary function _Fn introduced.

• 

By giving the optional argument 'no_Fn', a second process is run to remove all the _Fn functions introduced in the first step, ending with a DP system (which can be a single DP equation) that involves only the unknown functions found in the given input. This system that is free of auxiliary functions is obtained by running a differential elimination process ranking all the auxiliary _Fn higher than the unknown functions present in the input. For details on rankings, see DEtools[checkrank].

• 

The dpolyform routine also accepts the same optional arguments that are accepted by casesplit.

Examples

withPDEtools&colon;

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

declaregx&comma;y&comma;_F1x&comma;y&comma;_F2x&comma;y&comma;_F3x&comma;y

gx&comma;ywill now be displayed asg

_F1x&comma;ywill now be displayed as_F1

_F2x&comma;ywill now be displayed as_F2

_F3x&comma;ywill now be displayed as_F3

(1)

Consider the following non-polynomial expression.

e1gx&comma;y=tan2xy12

e1g=tan2xy

(2)

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

DPSdpolyforme1

DPSg_F1=0&comma;2_F1y_F21_F12=0&comma;2_F12+_F1x2=0&comma;_F22y=0&comma;_F2x=0,_F20&comma;_F1x0&comma;_F1y_F20,_F2=y&comma;_F1=tan2xy

(3)

To view the expression above in the usual Maple format, use the macro show.

show

g_F1=0&comma;2_F1y_F21_F12=0&comma;2_F12+_F1x2=0&comma;_F22y=0&comma;_F2x=0,_F20&comma;_F1x0&comma;_F1y_F20,_F2=y&comma;_F1=tan2xy

(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 back-substitution equations, specifying which non-polynomial object is represented by each auxiliary function _Fn.

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 tan2x+y 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 _F1, _F2, ... 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 e1 which, in turn, only involves the original unknowns (no _F1, _F2, ...), 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.

dpolyforme1&comma;no_Fn

gx=2g2+2&comma;gy2=g44y+g22y+14ywheregy0&comma;g210

(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:

lprint

`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],[diff(g(x,y),y) <> 0, -g(x,y)^2-1 <> 0])

To verify that this nonlinear PDE system

pde_sysopmapop&comma;

pde_sysgx=2g2+2&comma;gy2=g44y+g22y+14y&comma;gy0&comma;g210

(6)

for g is satisfied by e1, use the Maple pdetest command.

e1

g=tan2xy

(7)

pdetest&comma;pde_sys

0&comma;0

(8)

Note that, while the solution of the given expression e1 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.

pdsolvepde_sys

g=tan2x+y+2c__1

(9)

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

pde_sys1..2

gx=2g2+2&comma;gy2=g44y+g22y+14y

(10)

pdsolve

g=−I,g=I,g=tan2x+y+2c__1

(11)

and e1 is not included in the singular solutions g=±I.

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,

declarefx&comma;yx&comma;prime=x

fxwill now be displayed asf

yxwill now be displayed asy

derivatives with respect toxof functions of one variable will now be displayed with '

(12)

yx=BesselJn&comma;x

y=BesselJn&comma;x

(13)

dpolyform&comma;no_Fn

y''=y'x+n2x2yx2wherey0

(14)

For the following, see also hypergeom and DEtools[hyperode].

yx=hypergeoma&comma;b&comma;c&comma;fx

y=hypergeoma&comma;b&comma;c&comma;f

(15)

dpolyform&comma;y&comma;f&comma;no_Fn

y''=y'f ''f 'yabf '2f2f+ab1f+cy'f 'f2fwherey0&comma;f '0

(16)

In the input above, y&comma;f means that yx expressed as a function of f is wanted. If not given, this ordering is the one casesplit finds simpler.

For the following, see also MeijerG and DEtools[hyperode].

yx=MeijerGa&comma;b&comma;c&comma;d&comma;fx

y=MeijerGa&comma;b&comma;c&comma;d&comma;f

(17)

dpolyform&comma;yx&comma;no_Fn

y''=y'f ''f '+a1b1yf+ycdf '2f3f2+a+b3f2+cd+1fy'f 'f3f2wherey0&comma;f '0

(18)

In the input above, 'y(x)' means that in the output yx is expressed as a function of the other unknowns of the system (here f). This is equivalent to giving y&comma;f or yx&comma;f.

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:

hypergeoma&comma;b&comma;c&comma;fx=converthypergeoma&comma;b&comma;c&comma;fx&comma;MeijerG

hypergeoma&comma;b&comma;c&comma;f=ΓcMeijerGa+1&comma;b+1&comma;&comma;0&comma;1c&comma;fΓaΓb

(19)

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

Pν&comma;k=EllipticPiν&comma;k

Pν&comma;k=EllipticPiν&comma;k

(20)

is represented in DP form, not by an ODE, but by a PDE system.

dpolyform&comma;no_Fn

Pk,k=3k4+ν+1k2+νPkkk1k+1k2ν+2νν1Pνk1k+1k2νPν&comma;kk1k+1&comma;Pk,ν=Pkk2νkPνk2ν&comma;Pν,ν=k3+kPk2νν1k2ν+4νk2+k2+5ν22νPν2νν1k2νPν&comma;k2νν1wherePν&comma;k0

(21)

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

yx=dawson1x

y=dawson−1x

(22)

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

dpolyform&comma;no_Fn

y'=12yx1wherey0

(23)

DEtoolsodeadvisorop1&comma;1&comma;

_1st_order&comma;_with_symmetry_[F(x)*G(y),0]&comma;_Abel&comma;2nd type&comma;class C

(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 yx as the following hypergeometric function.

a3yx=hypergeom1&comma;2&comma;2Ix

a3y=hypergeom1&comma;2&comma;2Ix

(25)

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

e3dpolyforma3&comma;no_Fn

e3y''=2Ix2y'x2Iyxwherey0

(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].

op1&comma;1&comma;e3

y''=2Ix2y'x2Iyx

(27)

a3_bisdsolve&comma;Kovacic

a3_bisy=c__1x+c__2&ExponentialE;2Ixx

(28)

This means that the hypergeometric function appearing in a3 is equal to the right-hand side of a3_bis 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 a3 to the solution of the ODE.

e4a3a3_bis

e40=hypergeom1&comma;2&comma;2Ixc__1xc__2&ExponentialE;2Ixx

(29)

Next, compute the series of the right-hand side. In this case, it suffices to compute it up to order 2.

seriesrhse4&comma;x&comma;2

c__1c__2x−1+1+2Ic__2+Ox

(30)

Now, to solve for _C1 and _C2, build a system with the coefficients of x.

syscoeffsconvert&comma;polynom&comma;x

sys1+2Ic__2&comma;c__1c__2

(31)

Finally, produce:

ans_Csolvesys&comma;_C1&comma;_C2

ans_Cc__1=I2&comma;c__2=I2

(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 &ExponentialE;2Ix becomes

evale4&comma;ans_C

0=hypergeom1&comma;2&comma;2Ix+I2xI&ExponentialE;2Ix2x

(33)

from where the hypergeometric function can be isolated, resulting in the desired identity.

isolate&comma;hypergeom1&comma;2&comma;2Ix

hypergeom1&comma;2&comma;2Ix=I2x+I&ExponentialE;2Ix2x

(34)

In this easy case, this relation can be verified by means of a black box, table-lookup approach by using:

convert&comma;StandardFunctions

I2x+I&ExponentialE;2Ix2x=I2x+I&ExponentialE;2Ix2x

(35)

lhsrhs

0

(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 right-hand 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 non-polynomial, nondifferential system of equations for the unknowns yt,zt.

declarey&comma;zt&comma;prime=t

ytwill now be displayed asy

ztwill now be displayed asz

derivatives with respect totof functions of one variable will now be displayed with '

(37)

systtanyt+ztlnyt=0&comma;ytexpyt+zt+arctant=0

syst+tanyz+lny=0&comma;y&ExponentialE;y+z+arctant=0

(38)

Due to the non-trivial non-polynomial expressions involved, the Maple solve command in previous releases failed to solve this problem for yt and z. By using dpolyform you can solve sys as follows. First compute a differential polynomial form for sys.

dpolyformsys&comma;no_Fn

y'=1t2+1&comma;z'=1yt2+1wherey+10&comma;y0

(39)

DP_sysopmapop&comma;

DP_sysy'=1t2+1&comma;z'=1yt2+1&comma;y+10&comma;y0

(40)

Second, solve DP_sys using dsolve

sol_DP_sysdsolveDP_sys&comma;explicit

sol_DP_sysy=arctant+c__2&comma;z=lnarctant+c__2+c__1

(41)

This solution to DP_sys includes the solution to sys for some particular values of the integration constants c__1&comma;c__2 involved. To determine c__1&comma;c__2, substitute the above into sys.

sys_Cevalsys&comma;sol_DP_sys

sys_Cttanarctant+c__2+c__1=0&comma;arctant+c__2&ExponentialE;c__2+lnarctant+c__2+c__1=0

(42)

The next step is to solve sys_C for c__1&comma;c__2. We must expand sys_C 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.

z1maplhs&comma;sys_C&colon;

z2mapseries&comma;z1&comma;t&comma;1&colon;

z3simplifymapconvert&comma;z2&comma;polynom

z3tanc__2+c__1&comma;c__21&ExponentialE;c__2+c__1

(43)

Now solve for c__1&comma;c__2:

_EnvAllSolutionstrue

_EnvAllSolutionstrue

(44)

sol_Csolveopz3&comma;_C1&comma;_C2

sol_Cc__1=π_Z1~&comma;c__2=0,c__1=π_Z2~2+Iπ_Z3~&comma;c__2=π_Z2~2Iπ_Z3~

(45)

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

selecthas&comma;sol_C&comma;I1

c__1=π_Z2~2+Iπ_Z3~&comma;c__2=π_Z2~2Iπ_Z3~

(46)

sol_sysevalsol_DP_sys&comma;

sol_sysy=arctant+π_Z2~2Iπ_Z3~&comma;z=lnarctant+π_Z2~2Iπ_Z3~+π_Z2~2+Iπ_Z3~

(47)

This solution can be verified by substituting into sys.

sys

t+tanyz+lny=0&comma;y&ExponentialE;y+z+arctant=0

(48)

simplifyexpandevalsys&comma;sol_sys

0=0&comma;0=0

(49)

References

  

Cheb-Terrab, E.S. "A Computational Approach for the Exact Solving of Systems of Partial Differential Equations." Submitted to Computer Physics Communications, 2001.

See Also

allvalues

BesselJ

casesplit

convert

declare

DEtools

DEtools[checkrank]

DEtools[kovacicsols]

DEtools[Rif]

DifferentialAlgebra

DifferentialAlgebra[Tools][Display]

EllipticPi

hypergeom

hyperode

lprint

MeijerG

op

pdetest

PDEtools

pdsolve

RootOf

show

solve