PDEtools[FunctionFieldSolutions]  compute function field solutions for (differential or not) system of equations.

Calling Sequence


FunctionFieldSolutions(PDESYS, DepVars, options=value)


Parameters


PDESYS



equation or a set or list of them; it can include PDEs, ODEs, nondifferential equations and inequations

DepVars



(optional) may be required; function, or a set or list of them; the dependent variables of the problem

ivars = ...



(optional) name or set of names; additional independent variables, typically not present in the dependency of the unknowns DepVars

mathfunctiondegree = ...



(optional) nonnegative integer, or a set of equations where the lhs is one of unknowns (DepVars) and the rhs is a nonnegative integer; specifies the upper bound degree for the math functions in its solution

numberofsolutions = ...



(optional) nonnegative integer or the keyword all; specifies the number of polynomial solutions desired. The default is all having degree as upper bound.

orderofderivatives = ...



(optional) nonnegative integer, or a set of equations where the lhs is one of unknowns (DepVars) and the rhs is a nonnegative integer; specifies the upper bound order for derivatives in its solution

polynomialdegree = ...



(optional) nonnegative integer, or a set of equations where the lhs is one of unknowns (DepVars) and the rhs is a nonnegative integer; specifies the upper bound degree for the degree of polynomials in its solution

polynomialdependency = ...



(optional) nonnegative integer, a range of them, a name, or a set of names, or a set or list containing any of the previous objects; dependency of the solution

simplifier = ...



(optional) simplifier to be used instead of the default simplify/size





Options


A number of optional arguments can change the default computational behavior of FunctionFieldSolutions in ways that, depending on the example or your needs, may be preferred.
•

ivars = name  set(name)  list(name)


This option permits specifying independent variables of the problem even when they are not present in the dependency of the functions that enter DepVars, the unknowns of the problem. Note that besides those variables specified using ivars = ..., all the variables found in the dependency of the unknowns of problem are also always considered independent variables.

•

mathfunctiondegree = nonnegint


By default, an upper bound for the degree of the solution with respect to the mathematical functions of PDESYS and their derivatives is determined by internal routines based on PDEtools:Library:UpperBounds. You can optionally specify this upper bound by passing the argument mathfunctiondegree = n where n is a nonnegative integer (could be zero).

•

numberofsolutions = nonnegint


The righthand side is a positive integer indicating how many solutions FunctionFieldSolutions will attempt to compute before interrupting the process and returning the solutions found. The default behavior is to compute as many polynomial solutions as can be computed with the upper bounds for degrees used or given by the user (option degree).

•

orderofderivatives = nonnegint


By default, the solution attempted is polynomial in the mathematical functions found in PDESYS as well as in their derivatives up to the maximal differential order found in the equations of PDESYS. You can optionally specify this order of derivatives of mathematical functions of PDESYS by passing the argument orderofderivatives = n where n is a nonnegative integer (could be zero).

•

polynomialdegree = nonnegint


By default, an upper bound for the degree of the polynomials of independent variables, that appear as coefficients of the powers of mathematical functions entering the solution is determined by internal routines based on PDEtools:Library:UpperBounds. You can optionally specify this upper bound by passing the optional argument polynomialdegree = n where n is a nonnegative integer (could be zero).

•

dependency = name  nonnegint  range(nonnegint)  set(name)  list(name), <or a set or list of any of the previous types>


This option is useful to restrict in different ways the dependency of the polynomials entering as coefficients of mathematical functions within the solution. When dependency = n, a nonnegative integer, only polynomial solutions depending on different (permutations of) n independent variables will be computed. When dependency = n..m, that is a range from n to m, only solutions depending on permutations of k variables, where k is in the range n..m will be computed. Alternatively, you can also indicate which permutations of which variables are to be the dependency of the polynomial solutions by specifying the rhs as a set of lists, with each list containing the desired dependency, for example: say the independent variables are x, y, z, then you can specify dependency = {[x, y], [x, t], [y, t]}.


The righthand side indicates the simplifier to be used instead of the default which is simplify/size. This option is of use not just to simplify the solutions. You can specify any procedure to be used as simplifier; in this way you can have the solutions computed by FunctionFieldSolutions postprocessed entirely in the way you need before being returned (e.g. discard some, do something else with other ones, etc.).



Description


•

Given PDESYS, a system of equations for DepVars, possibly including inequations and nondifferential equations, FunctionFieldSolutions computes solutions that are polynomial in the mathematical functions of PDESYS and its derivatives, with coefficients that are polynomial in the independent variables. The independent variables are typically the variables DepVars depend on, plus any others optionally specified with ivars = .... FunctionFieldSolutions also works with anticommutative variables set using the Physics package using the approach explained in PerformOnAnticommutativeSystem.

•

If DepVars is not given, FunctionFieldSolutions will consider all the differentiated unknown functions in PDESYS as unknowns of the problems. Specifying DepVars however permits not only restricting the unknowns in different ways but also specifying unknowns of the problems which do not appear differentiated in PDESYS.

•

FunctionFieldSolutions uses a refinement of the heuristic used by PolynomialSolutions to compute an upper bound for degree of the solution with respect to the mathematical functions entering PDESYS and their derivatives. The differential order of the derivatives of the mathematical functions of PDESYS entering the solution is equal to the maximal differential order of the equations of PDESYS. The coefficients of these mathematical functions and their derivatives are in turn polynomial in the independent variables, of degree determined by UpperBounds.

•

FunctionFieldSolutions is automatically invoked by Infinitesimals, InvariantSolutions, and SimilaritySolutions when they receive the optional argument typeofsymmetry = functionfield in which case the dependency of the polynomials entering the coefficients of the mathematical functions, as well as their degree, can also be specified directly to those commands using their dependency and degree options.

•

To avoid having to remember the optional keywords, if you type the keyword misspelled, or just a portion of it, a matching against the correct keywords is performed, and when there is only one match, the input is automatically corrected.



Compatibility


•

The PDEtools[FunctionFieldSolutions] command was introduced in Maple 15.



Examples


>


Consider the following linear system in that involves the mathematical function
>


 (1) 
>


 (2) 
Typically, systems of this type do not admit polynomial solutions and frequently admit function field solutions:
>


>


 (3) 
Verify this solution
>


 (4) 
Compare with the general solution, that for this example is computable by pdsolve
>


 (5) 
The following system is similar to but contains nonlinear terms and its solution is out of reach for pdsolve
>


 (6) 
>


 (7) 
>


 (8) 
The following nonlinear system is also not solvable by pdsolve and its solution via FunctionFieldSolutions takes time to be computed; in cases like this one, the use of optional arguments to restrict the degrees in which the solution would depend on mathematical functions, can greatly diminish the computational time
>


 (9) 
>


 (10) 
>


 (11) 

