(optional) arguments that can be given in any order and are described as follows

funcs

-

set or list with indeterminate functions or names - can also be a ranking

HINT = `+`

-

indicate that the PDE system is to be solved by separating the variables by sum

HINT = `*`

-

indicate that the PDE system is to be solved by separating the variables by product

HINT = TWS

-

indicate that the PDE system is to be solved by computing a traveling wave solution as a power series in tanh(x), where xi represents a linear combination of the independent variables

HINT = TWS(foo)

-

indicate that the PDE system is to be solved by computing a traveling wave solution as a power series in foo, where foo is the name of a mathematical function

singsol=false

-

avoid the computation of the singular solutions when the system is nonlinear

mindim=N

-

avoid the computation of solutions if the dimension of the solution space is less than N

parameters=P

-

P is a list or set of names or functions which are solving variables with priority lower than any other variable

diffalg

-

request that the differential elimination step for all PDE systems be performed by using the DifferentialAlgebra package

Description

•

Given a PDE system, possibly including ODEs, algebraic constraints, and inequations, pdsolve returns an exact solution if: 1) the uncoupling of the system does not require more resources than those available in the computer and 2) the pdsolve routines for solving a PDE subsystem in a single unknown as well as the dsolve routines for solving related ODE systems succeed in solving the PDE and ODE subsystems arising in the uncoupling process. Depending on the complexity of the system, step 2) may not be fully successful. However, step 1) is systematic in that, generally speaking, whenever the system is consistent, the uncoupling is feasible. pdsolve also works with anticommutative variables set using the Physics package using the approach explained in PerformOnAnticommutativeSystem.

The solving process

1.

The system is first uncoupled by using differential algebra techniques for polynomial systems. When the PDE system, rational in the unknowns and their derivatives, contains non-polynomial coefficients, the uncoupling is performed by rewriting the system in polynomial form by using a differential extension approach (see PDEtools[dpolyform]).

Due to the intrinsic nature of the differential algebra elimination process, this first step always produces (possibly many) PDE subsystems, such that:

–

The equations inside each subsystem satisfy all the integrability conditions;

–

The union of the non-singular solutions of each subsystem is equal to the general and singular solutions of the original system;

–

Provided that the original system is not subdetermined, one of the PDE subsystems depends on a single unknown.

2.

The PDE subsystem for a single unknown is solved, and the unknown removed from all other subsystems. Due to nature of the differential elimination process, after removing this single unknown, there exists a PDE subsystem that depends on a single unknown.

Step 2 is repeated until all the PDE subsystems obtained in step 1 are solved, thus arriving at the solution to the original input PDE system.

•

When solving each of these PDE subsystems involving a single unknown, two situations may arise: the subsystem consists of only one PDE, or it consists of many PDEs. In the former case, pdsolve solves the problem by using older subroutines. In the latter case, pdsolve uses a set of routines that, at each step, change variables introducing differential invariants as new variables. This approach permits solving the problem when the PDE subsystem is essentially nonlinear.

The output

•

When successful, pdsolve returns a sequence of solution sets, including the singular solutions of the given PDE system. These singular solutions exist only when the system is nonlinear and can be identified by observing that the dimension of the solution space (basically the number of integration constants appearing) is less than the dimension of the general solution.

•

When pdsolve is partially successful, the output is a sequence of sets and lists. The sets contain solutions while the lists also contain unsolved differential equations. It is valuable to have these partial solutions because they may be easier to solve. For example, the unsolved equations may be ODEs instead of PDEs, less in number, or of lower differential order.

•

pdsolve can fail to solve any of the PDE subsystems obtained in step 1 of "The solving process" described above. In such a case, the output consists of a sequences of lists, where each list contains a PDE subsystem. The value of this output is that these PDE subsystems represent the uncoupling (also known as triangularization) of the original system. Depending on the PDE system, this triangularization may represent a relevant step towards solving the problem.

The unknowns of the problem and rankings

•

By default, when only the PDE system is given, pdsolve considers all the unknown functions present in the system as the unknowns of the problem - herein also called the solving variables. This default can be changed by calling pdsolve with an extra argument, specifying the solving variables either as a set or as a list containing the names of these functions or the functions themselves.

•

When the solving variables are indicated as a set, the ordering chosen by pdsolve for uncoupling the system is chosen by the PDEtools[casesplit] command, which performs the triangularization . When the solving variables are indicated as a list, for instance, , the uncoupling ordering attempted is: to obtain a PDE subsystem depending on only, another PDE subsystem depending on only, and another one depending on . If such a triangularization is successful, pdsolve first solves the subsystem for , then the one for by substituting the solution found for and solving the resulting system for , and finally the one for by substituting the solutions found for and solving the resulting system for .

•

The concept of "solving ordering" for the unknowns of the problem is not different from the concept of "ranking" in differential algebra (for a useful discussion on rankings, see rifsimp[ranking]). In fact, the "solving ordering" accepted by pdsolve can be more elaborate. Consider the ones used to indicate a "ranking" when using the DifferentialAlgebra or DEtools[Rif] packages. For example, by indicating the unknowns of the problem as in , one is indicating that pdsolve must decide whether comes before (or the opposite), is ranked third, and then pdsolve must decide whether comes before . This flexibility is extremely useful when solving nonlinear PDE systems, where slight changes in the solving ordering can lead to solutions in quite different formats or make an otherwise unsolvable (by pdsolve) problem solvable.

•

In addition to indicating the solving variables or the solving ordering as explained above, one can use the optional argument , where is a set or list of solving variables with less priority, meaning that they always appear at the end of the list of solving variables described in the previous paragraph. When is given as a list, the rules for choosing a particular ordering inside it are the ones described in the previous paragraph for the main solving variables.

Other optional arguments

•

When the PDE system is nonlinear, by default, pdsolve's output contains, in separate solution sets, the singular solutions of the system. This involves both computing the singular cases (when uncoupling the system inside PDEtools[casesplit]) and solving them. In many applications, however, the computation of the singular cases is not relevant. Also their computation is sometimes more time consuming than the computation of the general solution. For these reasons, an optional argument is provided to override this behavior, so that by giving singsol=false these singular solutions are not computed.

•

When a PDE system is solved, the dimension of the solution space (typically indicated by the number of integration constants present) depends on various factors, not only the "apparent differential order" of the system. In some applications, however, it is the case that the solutions of interest are only those that have at least a minimum number of dimensions. In such a case, to discard solutions with dimensions less than (some positive integer), use the optional argument. For nonlinear PDE systems, this option may also speed up the computational process since there is no time consumed in computing and solving the lower-dimension cases. For linear PDE systems, where there is only one solution, pdsolve returns NULL if N is greater than the dimension of the solution.

•

It is possible to ask pdsolve to solve a PDE system by trying to separate the variables by sum or product. For this purpose, use the optional argument or , respectively.

•

It is possible to ask pdsolve to solve a PDE system by computing a Traveling Wave Solution, as a power series expansion in tanh (default) or one of the following functions: exp, ln, sin, cos, tan, their multiplicative inverses csc, sec and cot, the corresponding six hyperbolic functions, arcsinh, the twelve elliptic Jacobi functions, the WeierstrassP function and also the identity function x -> x, useful to compute purely polynomial solutions when they exist.

•

By default, pdsolve performs all differential elimination processes for PDE systems by using the DEtools[Rif] package. This default can be changed by using the optional argument diffalg, anywhere in the calling sequence, which causes the computation to use the DifferentialAlgebra package.

•

For further mathematical conventions related to the output by pdsolve, see the conventions used in solve, dsolve, and int.

Examples

The computations below were performed on a Pentium II-400 laptop PC running Windows. Maple solved all five examples in 36 seconds.

Example 1.

Compute the point symmetries of an ordinary differential equation (ODE), that is, solve the determining PDE system for the infinitesimals of the symmetry generator. Consider example 11 from Kamke's book:

>

(1)

>

(2)

>

(3)

>

(4)

The PDE system satisfied by the symmetries, that is, infinitesimals of the symmetry generator, of the ODE above is given by

>

(5)

>

>

(6)

This is a second order linear PDE system, with two unknowns and four equations. Its general solution is given by

>

(7)

Since symmetries are defined up to a multiplicative constant, we can drop . Hence, for arbitrary , the ODE has only one point symmetry.

Solutions to PDE systems can be tested by using pdetest (the command tests whether the solution satisfies each PDE in the system).

>

(8)

Now, an interesting question is: Are there other solutions related to particular values of the parameters n and r?

To answer that question one must solve a more difficult, now nonlinear, PDE system by indicating to pdsolve that and are parameters.

Also, in this particular problem, from the form of the ODE , the case is of no interest since the ODE would become linear, and so, computing its symmetries is the same as computing its solution. We are interested in a solution for different values of and but also for . The first step is then to add this inequation to the PDE system.

>

Next we indicate to pdsolve that and are parameters of the problem, thus arriving at the desired solutions.

>

(9)

>

(10)

So there exist particular values of and for which the system has additional solutions. The solution set with and integers and with xi linear in is in fact a particular case of the general solution computed previously, but the other solution sets are not.

Example 2.

Compute the general solution of the following (linear) overdetermined system involving two PDEs, three unknown functions, one of which depends on 2 variables and the other two depend on only 1 variable.

>

(11)

>

(12)

The solution for the unknowns G, H, is given by

>

(13)

and depends on 3 arbitrary functions, .

>

(14)

Example 3.

Compute the solution of the following overdetermined first order linear system of 3 PDEs in a single unknown .

>

>

(15)

The solving technique makes use of differential invariants and the solution is given by

>

(16)

>

(17)

Example 4.

Compute the solution of the following nonlinear system, consisting of Burger's equation and a possible potential.

>

(18)

>

(19)

Apart from the solution to the general or main case, nonlinear systems usually have singular solutions, which solve the subsystems appearing during the splitting into cases of the differential elimination process. Depending on the case, the computation of the singular cases may be quite time consuming. To compute only the solution to the general case, one can give the optional argument singsol = false.

>

(20)

>

(21)

Without giving singsol = false, pdsolve attempts to compute the solutions to both the general and singular cases, in this example leading to

>

(22)

In the singular case above, , only Burger's equation remains in the system and the solution computed is a Traveling Wave Solution. The introduction of a potential in the system leads to the general solution only when is different from zero.

Compute the solutions of the following overdetermined linear system of 38 PDEs that arises when computing point symmetries for the wave equation (more like an exercise concerning the solving of a system with many equations). The system is given by

>

(24)

>

(25)

>

(26)

The solution is given by

>

(27)

>

(28)

Example 6.

The following is a nonlinear PDE system example in five unknowns, containing four PDEs, extracted from Landau and Lifshitz's "Fluid Mechanics" book. To obtain enhanced display and simplify the input

>

(29)

>

(30)

>

>

The PDE system is:

>

(31)

>

(32)

>

(33)

>

(34)

>

This system represents a 2-D (coordinates x, z) fluid layer, open to air, subjected to a vertical temperature gradient (Nabla of T(x,z,t)) and embedded in a gravitational field. The constants sigma and rho are related to the viscosity, thermal diffusivity, the gravitational constant, and the coefficient of thermal expansion. A set of traveling wave solutions can be computed for this system in 2 seconds (typical PC 2 GigaHertz, 2004). The nonsingular case after removing redundant constant solutions:

>

(35)

For p = constant, this system also admits solutions in terms of the WeierstrassP elliptic function; this is last in the sequence of nonsingular solutions (operand [-1]).

A PDE system example with two unknown anticommutative functions of four variables, two commutative and two anticommutative; to avoid redundant typing in the input that follows and redundant display of information on the screen let's use PDEtools:-diff_tablePDEtools:-declare

>

(39)

>

Now we can enter derivatives directly as the function's name indexed by the differentiation variables and see the display the same way; two PDEs

>

(40)

>

(41)

The solution to this system:

>

(42)

This solution involves an anticommutative constant, analogous to the commutative constants where n is an integer. The arbitrary functions introduced are all commutative, as usual and the Grasmannian parity of the left and right-hand-sides is preserved##