Table of Contents

— *Ekaterina Shemyakova 2012/07/25 14:21*

This is a package for computer algebra system MAPLE. It contains symbolic algorithms for Linear Partial Differential Operators (**LPDOs**) and
for linear Partial Differential Equations (**PDEs**) with parametric coefficients.
We consider arbitrary LPDOs in arbitrary many independent variables and of arbitrary orders and allow
coefficients to be symbolic. Numerous tools are available with the focus on the Darboux, generalized Darboux and related invariant algorithms.

The package is in txt format: lpdo_.txt.

Use “read” to read this file at the top of your Maple sheet. In Linux it should look like this:

read "/home/ekaterina/Desktop/work/progr_factor/systemize/lpdo_.txt";

In Windows it should look like this:

read `\\work\\PDEs\\lpdo_.txt`;

Solves **E** by Laplace method (not to be confused with Laplace integral method) if this is possible to do so by less or equal to **n** iterations. Works significantly better than existing in MAPLE PDEtools[Laplace], which fails in many examples.

**n**is the number of iterations.**E**is**an LPDO**, that is a Linear Partial Differential Operator in the form

or **a PDE**, a Partial Differential Equation in the form

.

Here a,b,c may depend on the independent variables. One can use any names for independent variables. When work with LPDOs, specify them using LPDO__set_vars at the top of the worksheet. For example,
LPDO__set_vars([s,t]):
would declare two independent variables s and t.

**u**is optional, the dependent function.

Procedure **ginv(L)** returns a set of generating differential invariants for L with respect to the gauge transformations

.

The same procedure but with two arguments, **ginv(L,M)** returns a set of generating joint differential invariants for L and M with respect to the gauge transformations. Works for the following operators and pairs of operators:

- and
**M arbitrary**LPDO. - L is a third order LPDO given in its normalized form, i.e. for L in one of those forms.
- with principal symbol

Package can work with LPDOs of arbitrary orders and depended on arbitrary many independent variables. The independent variables are to be declared at the start of each worksheet using function

LPDO__set_vars(vars):

where **vars** is a list of independent variables.
For example,

LPDO__set_vars([x,y,z,t]):

sets 4 independent variables **x,y,z,t**.

Declaration

LPDO__warnings:=true:

means that using some of the function available in the package, you may get some additional information (e.g. solutions of which PDEs must belong to the field). By default

LPDO__warnings:=false:

LPDOs

where **J** is a multi-index,

, and

are kept as a one dimensional array of its coefficients.

- LPDO__create() returns an LPDO that multiplies by zero, an LPDO of order zero.
- LPDO__set_value(L::array,f,J::list) sets coefficient of LPDO
**L**equaled to**f**. - LPDO__create0(a00) returns an LPDO of multiplication by
**a00**, an LPDO of order zero. - LPDO__create1(a10,a01,a00) returns an LPDO

.

- LPDO__create2(a20,a11,a02,a10,a01,a00) returns an LPDO

.

- Create_LPDO_from_coeff(a::list) returns LPDO with the coefficients from list
**a**, in which they are

ordered lexicographically. E.g.

- Create_LPDO_from_coeff([a00,a10,a01,a20,a11,a02]) returns

- LPDO__add_value(L::array,f,J::list) adds
**f**to the coefficient with multi-index**J**.

- LPDO__degree(L::array) returns the order of LPDO
**L**.

- LPDO__simplify(L::array) applies
**simplify**to all the coefficients of LPDO**L**.

- LPDO__expand(L::array) applies
**expand**to all the coefficients of LPDO**L**.

- LPDO__factor(L::array) applies
**factor**to all the coefficients of LPDO**L**.

- LPDO__add(L1::array,L2::array) returns the sum of
**L1**and**L2**. - LPDO__inc(L1::array,L2::array) adds
**L1**and**L2**, and save the result as**L1**. - LPDO__minus(L1::array,L2::array) returns the difference of
**L1**and**L2**. - LPDO__mult(L1::array,L2::array) returns the composition of
**L1**and**L2** - LPDO__mult1(f,L::array) multiplies
**L**by function**f**on the left.

- LPDO__print(L::array) is the “pretty print”.
- LPDO__conj(L::array,g) returns the result of the gauge transformation

- LPDO__apply(L::array, f) applies
**L**to function**f**. - LPDO__value(L::array,J::list) returns the coefficient with index
**J**, that is at**D_J**in**L**. - LPDO__transpose(L::array) returns the formal adjoint of
**L**.

All differential invariants of operators

with respect to the gauge transformations

can be expressed in terms of so-called Laplace invariants

If **h** is not zero then define a **+1** Laplace transformation by equality

If **k** is not zero then define a **-1** Laplace transformation by equality

Thus until **h** or **k** are not zero, we have chain

There are some formulas relating those invariants, which implies that each new iteration of a Laplace
transformation brings us only one new invariant (only **h** or **k** is new). So, basically, we have the following chain of invariants:

The algorithm works as follows:

- computes chain of the invariants of length
**n**into both directions - if we meet zero on the way, then the corresponding transformed LPDO is factorizable. So we find its kernel and compute the kernel of the initial LPDO using known formulas.

The following functions are available:

- Laplace_solver(n,E,u) has been described here.
- LPDO__Lapl_trans(i,L) returns
**L_i**, where**i=1**or**i=-1**. LPDO**L**must be of the form

or

- LPDO__Lapl_chain(n,L) returns the chain of Laplace invariants and their generalizations. The chain is output in the form

Here **n** is the number of iterations of Laplace transformations.

The property of the existence of a factorization of an LPDO is invariant with respect to gauge transformations. Thus, differential invariants can be very useful for search of a factorization of an LPDO. For each type of factorization (e.g. for LPDOs with symbol (pX+qY)XY there are 12 different types of factorizations) return the conditions for the existence of a factorization for an LPDO are implemented for all bivariate LPDOs of third order in terms of generating invariants of this LPDO. More specialized notions as obstacles to factorizations are implemented too.

Classical Laplace transformations (do not confuse with Laplace transform involving integrals) are implemented. Namely, the funcitons return the resulting operators, as well as the chain of invariants for Laplace LPDOs in classical for Darboux form, that is with symbol XY, as well as for Laplace LPDOs in the form more familiar for Physicists, that is with symbol XX+YY. Construction of a Darboux transformation of order one (two) by one (two) linearly independent solutions.

Cancellation of the mixed derivatives in M from the left and from the right, for a pair (M,L) defining a Darboux transformation. Generating sets of invariants for pairs (M,L) defining a Darboux transformation unders the gauge transforamtiosn of the pairs and under the gauged evolutions. Expressions of the later in terms of the former. Invariant description of pairs (M,L) defining any at all Darboux transformation.

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial 3.0 Unported