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

Online Help

All Products    Maple    MapleSim


Linear Differential Operators

 

In Maple, one can work with differential operators by using a subset of the DEtools package. Differential operators in this case are polynomial objects of the form

Lanx DFn+...+a1x DF+a0x

 

with the coefficients aix being rational functions over a field. Here D is an object that satisfies  properties such as DFx=1 and DFuv=uDFv+DFuv.  One can perform functions on these operators such as multiplying, forming symmetric products, taking one-sided greatest common divisors, factoring, and so on.


This functionality, due to Mark van Hoeij (University of Nijmegen), allows for significant future advances for applications such as finding closed form solutions of linear differential equations.  Some applications of this subpackage of DEtools are included below.

We use the with command to allow us to use the short form for the commands in the DEtools package.

restart

withDEtools:

 Algebraic Operations with Differential Operators

 Differential operators are a noncommutative domain with operations such as addition, multiplication, application, and so on. A differential operator L in CxDF is an expression Lanx DFn+...+a1x DF+a0x, where aix are elements of C(x). An element L in CxDx corresponds to a linear homogeneous differential equation Lyx=0.

 

Multiplication (see DEtools[mult]) in the ring CxDx corresponds to composition of differential operators. So if L=multf,g, then Lyx=fgyx. In particular, multDF,x=xDF+1.

 

As examples of the types of algebraic operations you can do, consider the three differential operators:

L1:=x2DF2xDF+ax2

L1x2DF2xDFx2+a

(1.1)

L2:=xDFx2b

L2xDFx2+b

(1.2)

L3:=DF2x

L3DF2x

(1.3)

 

You can multiply these operators and note that multiplication is noncommutative:

L4:=collectmultL1,L2,DF,x,DF

L4x3DF3+x4+bx2+x2DF2+4x3+axbxxDF+x4ax2bx2+ab

(1.4)

L5:=collectmultL2,L1,DF,x,DF

L5x3DF3+x4+bx2+x2DF2+axbxxDF+x4ax2bx2+ab2x2

(1.5)

 

The argument DF,x tells the mult command that the multiplication is over the differential domain specified by DF and x, and so the variables a and b are constants. This can also be set by the environment variable _EnvdiffopdomainDF,x, if you expect to use the same domain throughout.

 

The concept of a one-sided lowest common multiple and greatest common divisor exists in such domains. For example,

L6:=LCLML3,L2,DF,x

L6DF3+x6+3bx4+x53b2x2bx33x4+b3+x3+3b2+2bDF2xx42bx2x3+b2+x2+bxDFx6+3bx4+x53b2x2bx32x4+b32bx2+4b2+x2+3bx42bx2x3+b2+x2+b

(1.6)

and

L7:=GCRDL4,L6,DF,x

L7DF+x2+bx

(1.7)

 

One can check this by using right or left division. In this case, you have

rightdivisionL6,L7,DF,x

DF2+2x4+x3+2b2+2bDFxx42bx2x3+b2+x2+bx52bx3x4+b2x+2x3+4bx2x26bx42bx2x3+b2+x2+b,0

(1.8)

rightdivisionL4,L7,DF,x

x3DF2+x2DFx3+axx,0

(1.9)

 

which in both cases gives a quotient with 0 remainder. You can check the computation by multiplying:

collectL4mult1,L7,DF,x,DF,normal

0

(1.10)

 Factorization of Differential Operators

The section contains subsections on closed-form solutions, and on other factorization options.

 Building Closed-form Solutions of Differential Equations

Consider the third-order differential equation

 

ode:=xx3yx2x2ⅆⅆxyx+x3+xⅆ2ⅆx2yx+x2ⅆ3ⅆx3yx

odex3xyx2x2ⅆⅆxyx+x3+xⅆ2ⅆx2yx+x2ⅆ3ⅆx3yx

(2.1.1)

 

One can use factorization of differential operators to find closed form solutions for this ODE. One can convert the equation to a differential operator:

dode:=de2diffopode,yx,DF,x

dodex2DF3+x3+xDF22x2DFx3x

(2.1.2)

and factor by:

ode_fact:=DFactordode,DF,x

ode_factx2DF+xx2+2,DF2DFxx21x2

(2.1.3)

 

This shows that one factorization (factorizations are not unique) has a right factor given by:

right_fact:=ode_fact2

right_factDF2DFxx21x2

(2.1.4)

 

Any solution of the corresponding differential equation is then also a solution to the original homogeneous equation. This results in

ode2:=diffop2deright_fact,DF,x,yx

ode2x21yxx2ⅆⅆxyxx+ⅆ2ⅆx2yx

(2.1.5)

dsolveode2,yx

yx=c__1xBesselI0,x+c__2xBesselK0,x

(2.1.6)

 

The remaining solution can be determined by reduction of order using the above two solutions. This is actually the method used in dsolve to solve the original ODE:

dsolveode

yx=c__1xBesselI0,x+c__2xBesselK0,x+c__3xBesselK0,xBesselI0,xⅇx22x2ⅆxBesselI0,xBesselK0,xⅇx22x2ⅆx

(2.1.7)

 More Factorization

The differential operator

df:=DF2+21x2x+1100x2x12

dfDF2+21x2x+1100x2x12

(2.2.1)

 

considered as an element of QxDF, is well known not to factor. We can check this by using the DFactor function:

DFactordf,DF,x

DF2+21x2x+1100x2x12

(2.2.2)

 

In addition, its differential Galois field is known to be A5SL2. It follows from the work of Singer and Ulmer that the sixth symmetric power of order 7

dff:=symmetric_powerdf,6,DF,x

dffDF7+294x2x+1DF525x2x121472x33x2+5x2DF45x3x13+441349x4698x3+1547x21198x+349DF3625x4x144411094x52735x4+7470x38470x2+4829x1094DF2625x5x15+631597268x64791804x5+15457733x422929126x3+19286733x28620804x+1597268DF62500x6x16189277134x7969969x6+3595389x56563550x4+7263809x34817148x2+1768603x27713431250x7x17

(2.2.3)

 

factors and has factors of order 3 and 4. However, even though it was known what the orders of the factors are, no previous algorithm could actually do the factorization. We now obtain (after some time)

fact_df:=DFactordff,DF,x

fact_dfDF4+42x1DF3xx1+323x223x+3DF25x2x22x+1+358x387x2+33x2DF50x3x1x22x+196x42x3+3x22x+1625x4x12x22x+1,DF342x1DF2xx1+749x2749x+249DF25x2x22x+19266x3399x2+265x6650x3x33x2+3x1

(2.2.4)

 

One can check the factorization:

L:=multfact_df1,fact_df2,DF,x:

collectLdff,DF,normal

0

(2.2.5)

 Building of Differential Equations

One can take advantage of the differential operator tools in DEtools to construct solutions of differential equations from known equations. For example,

df:=x2DF2xDF+x21

dfx2DF2xDF+x21

(3.1)

 

is a differential operator with Bessel function solutions. Indeed we have

diffop2dedf,yx,DF,x

x21yxⅆⅆxyxx+ⅆ2ⅆx2yxx2

(3.2)

dsolve,yx

yx=c__1xBesselJ2,x+c__2xBesselY2,x

(3.3)

 

The third symmetric power of df then generates a differential equation that has the power combinations of the above as its solutions. For example,

dff:=symmetric_powerdf,3,DF,x

dffDF46DF3x+52x2+1DF2x256x27DFx3+33x4+2x221x4

(3.4)

diffop2dedff,yx,DF,x;

33x4+2x221yxx456x27ⅆⅆxyxx3+52x2+1ⅆ2ⅆx2yxx26ⅆ3ⅆx3yxx+ⅆ4ⅆx4yx

(3.5)

dsolve,yx

yx=c__1x3BesselJ2,x3+c__2x3BesselY2,x3+c__3x3BesselJ2,xBesselY2,x2+c__4x3BesselJ2,x2BesselY2,x

(3.6)

 

We can construct products of solutions using the symmetric_product function. For example,

df2:=DFx:

dsolvediffop2dedf2,yx,DF,x,yx

yx=c__1ⅇx22

(3.7)

 

produces an exponential solution. In this case

df3:=symmetric_productdf,df2,DF,x

df3x2DF22x3DFxDF+x4+x21

(3.8)

dsolvediffop2dedf3,yx,DF,x,yx

yx=c__1ⅇx22xBesselJ2,x+c__2ⅇx22xBesselY2,x

(3.9)

 

gives a solution that is the product of solving df and df2.

 

To create an equation having an exponential solution, we can either explicitly construct operators from exponential equations, or we can use the exterior power operation. If an operator L has a right factor of order n, then the n-th exterior power of L has a right factor of order 1. For example

L:=collectmultdf+x,df,DF,x,DF

Lx4DF4+2x3DF3+2x4+x33x2DF2+2x3x2+3xDF+x4+x32x2x+1

(3.10)

M:=exterior_powerL,2,DF,x

MDF6+8DF5x+4x2+2x+7DF4x2+24x2+7x3DF3x3+25x2+3x7DF2x4+x2+14DFx5x2+14x6

(3.11)

DFactorM,DF,x

DF+4x,DF4+5DF3x+22x2+x2DF2x2+34x+1DFx2+5x2,DF1x

(3.12)

 

shows this right-hand factor. This can also be seen with

expsolsdiffop2deM,yx,DF,x,yx

x

(3.13)

Return to Index for Example Worksheets