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

Online Help

All Products    Maple    MapleSim


PDEtools

  

Library

  

The internal routines of the PDEtools package

 

Calling Sequence

Parameters

Description

AbstractedFunction

AssignFromINFO

AssignToINFO

BuildFunctionFieldHint

BuildPolynomialHint

ChooseSimilarityVariables

CloseSystem

CompatibleOptions

ConstructTrivialSymmetry

ContactCondition

Degree

DifforderJet

Forget

FromJetNumbersToJetVariables

FromJetVariablesToJetNumbers

GenerateInfinitesimalLabels

GetCoefficients

GetDepVars

GetDependency

GetExplicitSolutions

GetFAndDiffVars

GetFunctionsWithDifferentDependency

GetIndepVars

GetInfinitesimals

GetJetVariables

GetNewDepAndIndepVars

GetNew_Fn

GetNotation

GetPDESYS

GetProlongationValue

GetRepeatedNames

GetSysUFYX

GetUnknownsAndDependency

Gsolve

HasDependency

HasDerivatives

HideFalseDerivatives

InfinitesimalGeneratorToList

IsAutonomousPDE

IsHigherDerivative

IsLinearPDE

IsPointSymmetry

IsReducible

JetNumbersToJetVariables

JetVariablesToJetNumbers

MapHintIntoPDESolution

NormalizeBoundaryConditions

Normalize_Fn_Cn

PartialDerivatives

ProfitableSymmetry

PutInfinitesimalLabels

RecycleArguments

SelectRemoveSpecializable_Fn_Cn

SortDerivatives

Specialize_Cn

Specialize_Fn

ToSameVariables

UpperBounds

YBracketsToY

YToYBrackets

Calling Sequence

PDEtools:-Library:-Routine(arguments, options)

Parameters

Routine

-

a Routine of the PDEtools Library; could be any of those shown via with(PDEtools:-Library)

arguments

-

the arguments of Routine, as described in Describe(PDEtools:-Library:-Routine)

options

-

Most Library Routines accept optional arguments of the form name = value

Description

• 

Most of the internal Routines of PDEtools, used by the external commands listed in PDEtools, are also available for use as external commands via PDEtools:-Library:-Routine. These Routines can be useful to program your own extensions of PDEtools, or differential equation programs in general, without having to rewrite everything from the scratch. In this sense, these Library Routines are useful mainly for programmers, although some of them, like for instance CloseSystem or ContactCondition can also be seen as differential equation commands.

• 

All the routines of the PDEtools:-Library also work with anticommutative variables set using the Physics package.

• 

Instead of providing a help page for each of these Library readable programming tools, only brief information on their use is provided using the Describe command, as in Describe(PDEtools:-Library:-Routine) or just Describe(Routine) if you have first entered with(PDEtools:-Library). Below there is also an alphabetical listing of these Library Routines pointing to sections within this single page, containing the same information provided by Describe(Routine).

• 

An alphabetical listing of these Routines is as follows

AbstractedFunction

AssignFromINFO

AssignToINFO

BuildFunctionFieldHint

BuildPolynomialHint

ChooseSimilarityVariables

CloseSystem

CompatibleOptions

ConstructTrivialSymmetry

ContactCondition

Degree

DifforderJet

Forget

FromJetNumbersToJetVariables

FromJetVariablesToJetNumbers

GenerateInfinitesimalLabels

GetCoefficients

GetDepVars

GetDependency

GetExplicitSolutions

GetFAndDiffVars

GetFunctionsWithDifferentDependency

GetIndepVars

GetInfinitesimals

GetJetVariables

GetNewDepAndIndepVars

GetNew_Fn

GetNotation

GetPDESYS

GetProlongationValue

GetRepeatedNames

GetSysUFYX

GetUnknownsAndDependency

Gsolve

HasDependency

HasDerivatives

HideFalseDerivatives

InfinitesimalGeneratorToList

IsAutonomousPDE

IsHigherDerivative

IsLinearPDE

IsPointSymmetry

IsReducible

JetNumbersToJetVariables

JetVariablesToJetNumbers

MapHintIntoPDESolution

NormalizeBoundaryConditions

Normalize_Fn_Cn

PartialDerivatives

ProfitableSymmetry

PutInfinitesimalLabels

RecycleArguments

SelectRemoveSpecializable_Fn_Cn

SortDerivatives

Specialize_Cn

Specialize_Fn

ToSameVariables

UpperBounds

YBracketsToY

YToYBrackets

AbstractedFunction

AbstractedFunction(object,chi,j,YX,(Y := YX),{(inallcases::truefalse := false)})


Parameters

* object - any algebraic object
* chi    - a name to be used in the returned function chi[j](...)
* j      - an index for 'chi', typically a number
* YX     - a list of relevant names
* Y      - optional, a list of relevant symbols that appear indexed within object
* inallcases - optional, default to false, to proceed also when object is already an unknown function

Description: AbstractedFunction abstracts an algebraic object into a function chi[j](...), of the names found in object that are members of YX or that are indexed symbols found in Y.

Example

> PDEtools:-Library:-AbstractedFunction(exp(x), phi, 1, [y, x]);
                              phi[1](x)

AssignFromINFO

AssignFromINFO(INFO,Vars)


Parameters

* INFO - a table
* Vars - a list of names, to be used as indexes of INFO

Description: AssignFromINFO assigns to A the value of INFO["A"] for every name A in a list 'Vars'.

Example

> INFO["a"], INFO["b"] := 5, e:
> PDEtools:-Library:-AssignFromINFO('INFO', '[a, b]'):
> a;
                           5
> b;
                           e

AssignToINFO

AssignToINFO(INFO,Vars::uneval)


Parameters

* INFO - a table
* Vars - a list of names, to be used as indexes of INFO, and that may have some value assigned

Description: AssignToINFO assigns INFO["A"] := eval(A) for every name A in a list 'Vars'.

Example

> a, b := 5, e:
> PDEtools:-Library:-AssignToINFO('INFO', [a, b]):
> INFO["a"];
                           5

BuildFunctionFieldHint

BuildFunctionFieldHint(sys::set(algebraic),F::list,(Y := map2(op,0,F)),(X := GetIndepVars(F)),(v::{name, identical("not given")} := "not given"),` $`,{(mathfunctiondegree := "not given"), (orderofderivatives := "not given"), (v_indexshift::nonnegint := 0)})


Parameters

* sys  - a set of algebraic differential equations, mainly involving mathematical functions
* F    - a list with the dependent variables of sys
* Y    - the names of the functions in F
* X    - the independent variables with the ordering found in F
* v    - optional, any name to be used as in v[n](..) to represent coefficients of powers of mathematical functions
* mathfunctiondegree - optional, a nonegative integer indicating the degree with which the mathematical functions will enter the functionalfield hint returned
* orderofderivatives - optional, a nonegative integer indicating the order for derivatives of mathematical functions entering the functionalfield hint returned
* v_indexshift - optional, default value is 0, used in the v[n+v_indexshift](..) entering the functionfield hint returned

Description: BuildFunctionFieldHint returns a sequence of two elements:
   1) a set with equations, with the dependent variables of F in the lhs and a related hint in the rhs, polynomial in the mathematical functions found in sys and their derivatives, and with unknown function coefficients v[..](...);
   2) a list with all the functions v[..](...) entering that set of hints.

Example

> PDEtools:-Library:-BuildFunctionFieldHint({-((diff(F(x, y), y))*x*y-(diff(F(x, y), x))*x*y-exp(x)*x*y+x+exp(x)*y^2*x+y)/(x*y), -((diff(G(x, y), y))*x*y-(diff(G(x, y), x))*x*y-exp(x)*x*y-x+exp(x)*y^2*x+y)/(x*y)}, [F(x, y), G(x, y)], [F, G], [x, y], v, mathfunctiondegree = 1, orderofderivatives = 1);

  {F(x, y) = v1[1](x, y) + v1[2](x, y) ln(y) + v1[3](x, y) ln(x)

         + v1[4](x, y) exp(x) + v1[5](x, y) Ei(x), G(x, y) =

        v1[6](x, y) + v1[7](x, y) ln(y) + v1[8](x, y) ln(x)

         + v1[9](x, y) exp(x) + v1[10](x, y) Ei(x)}, [

        v1[1] = v1[1](x, y), v1[2] = v1[2](x, y), v1[3] = v1[3](x, y),

        v1[4] = v1[4](x, y), v1[5] = v1[5](x, y), v1[6] = v1[6](x, y),

        v1[7] = v1[7](x, y), v1[8] = v1[8](x, y), v1[9] = v1[9](x, y),

        v1[10] = v1[10](x, y)], [v1[1](x, y), v1[2](x, y),

        v1[3](x, y), v1[4](x, y), v1[5](x, y), v1[6](x, y),

        v1[7](x, y), v1[8](x, y), v1[9](x, y), v1[10](x, y)]

BuildPolynomialHint

BuildPolynomialHint(PDESYS,F::list,(v::{list(name), identical("not given")} := "not given"),` $`,{(degree := "not given"), (dependency::{list(name), identical("not given")} := "not given"), (donotusethesesymbols := {}), (ivars::{list(name), set(name)} := {}), (undeterminedcoefficients::{string, assignable, identical("not given")} := "not given"), (v_indexshift::nonnegint := 0)})


Parameters

* PDESYS    - a set of algebraic differential equations
* F         - a list with the dependent variables of PDESYS
* v         - optional, any name to be used as in v[n](..) to represent coefficients of powers of the independent variables found in F
* donotusethesesymbols - optional, a set of global names that should not be used when constructing the hint to be returned
* dependency - optional, default to the independent variables found in F, can be a list of names indicating the dependency of the hint
* ivars - optional, to indicate additional independent variables, possibly not found in F, so that the hint returned should also be polynomial in ivars
* undeterminedcoefficients - optional, of type assignable, if given it will be assigned a set with the undetermined coefficients
* v_indexshift - optional, default value is 0, used in the v[n+v_indexshift](..) entering the hint returned

Description: BuildFunctionFieldHint returns a set of equations with the dependent variables of F in the left-hand-sides and a related hint for them, polynomial in the independent variables found in F, in the right-hand-sides, with unknown constant coefficients v[n] (n::integer).

Example

> PDEtools:-Library:-BuildPolynomialHint((diff(F(x, y), x))*(diff(G(x, y), x))+(diff(F(x, y), y))*(diff(G(x, y), y))+G(x, y)*(diff(diff(F(x, y), x), x)+diff(diff(F(x, y), y), y)) = -1, [F(x, y), G(x, y)], undeterminedcoefficients = 'S');

  {F(x, y) =
                                           2                      2
        v1[1] + v1[2] y + v1[3] x + v1[4] y  + v1[5] x y + v1[6] x ,

        G(x, y) = v2[1] + v2[2] y + v2[3] x}

> S;

   {v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v2[1], v2[2], v2[3]}

ChooseSimilarityVariables

ChooseSimilarityVariables(sv,TY,TX,nY,itr,(recursing := false))


Parameters

* sv    - a list of candidates for dependent similarity variables
* TY    - the similarity transformation for the dependent variables (old to new)
* TX    - the similarity transformation for the independent variables (old to new)
* nY    - the number of dependent variables
* itr   - the complete inverse transformation (new to old)
* recursing  - default is false, to allow recursion

Description: ChooseSimilarityVariables returns a set with an optimal choice for the dependent similarity variables.

Example

> PDEtools:-Library:-ChooseSimilarityVariables([r, s], [u = s+Intat(_F1(_a)+_F3(_a-r), _a = _psi)+_F2(r)*_psi], [t = _psi, x = r], 1, {_psi = t, r = x, s = -(Int(_F1(t)+_F3(t-x), t))-_F2(x)*t+u});

        {s}

CloseSystem

CloseSystem(SYS,F::list,(X := GetIndepVars(F)),{(DepVars_ranking::{list, identical("not given")} := "not given"), (IndepVars_ranking::{list, identical("not given")} := "not given"), (avoidfirstround::truefalse := false), (usephysics::truefalse := false)})


Parameters

* SYS    - any differential equation, or a set or list of them
* F      - a list of dependent variables
* avoidfirstround - optional, to indicate that SYS is of the form 'dF = ...' and written according to some ranking for DepVars and IndepVars
* DepVars_ranking - optional, required when passing avoidfirstround, this is the ranking for the dependent variables 'F'
* IndepVars_ranking - optional, required when passing avoidfirstround, this is the ranking for the independent variables of 'F'

Description: CloseSystem computes a system equivalent to SYS in that it has the same solutions as SYS, and that includes all the integrability conditions explicited.

Example

> PDEtools:-Library:-CloseSystem([diff(u(x, y), x)-(diff(u(x, y), y)) = 0, diff(u(x, y), y, y) = 0], [u(x, y)]);

                                      2            2          
        /d         \   /d         \  d            d           
       {|-- u(x, y)| - |-- u(x, y)|, --- u(x, y), --- u(x, y)}
        \dx        /   \dy        /    2            2         
                                     dx           dy          

CompatibleOptions

CompatibleOptions(command,{(exceptions::set(name) := {})})


Parameters

* command    - any Maple command name
* _rest      - a sequence of Maple options, typically of the form keyword = value, to be analyzed for compatibility
* exceptions - optional, to indicate a set of options to be excluded from the compatibility analysis

Description: CompatibleOptions returns the options that are compatible with a given 'command', among an arbitrary sequence of options (the _rest sequence).

Example

> PDEtools:-Library:-CompatibleOptions(PDEtools:-DeterminingPDE, order=2, explicit, jetnotation = jetvariables, simplifier = normal, tryrisingtheorder, arbitraryfunctionname, exceptions = {simplifier});

        order = 2, jetnotation = jetvariables

ConstructTrivialSymmetry

ConstructTrivialSymmetry(Fn::list(name),Y,X,{(expanded::truefalse := true), (prolongation::nonnegint := 0), (differentialorder::nonnegint := prolongation), ([notation, jetnotation]::{identical(true,jetODE,jetvariables,jetvariableswithbrackets,jetnumbers)} := 'jetnumbers')})


Parameters

* Fn    - a list with N names of arbitrary functions, where N is the number of independent variables in the given 'X'
* Y    - a list with names of dependent variables
* X    - a list with names of independent variables
* prolongation - optional, default to 0, can be any nonnegative integer indicating the prolongation order of the trivial symmetry to be returned
* jetnotation - optional, default is 'jetnumbers', can be any of the jet notations understood in PDEtools (see ?PDEtools:-ToJet)
* differentialorder - optional, the maximal differential order of derivatives entering (in jet notation) the functionality of the arbitrary functions of the trivial symmetry
* expanded - optional, can be true (default) or false, to return expanded the prolongations of the trivial symmetry (see option expanded in ?InfinitesimalGenerator)

Description: ConstructTrivialSymmetry returns a list with the infinitesimals of a trivial symmetry, that is, one that is always admitted by any PDE system but that cannot be used to reduce the number of its independent variables or dependency in general.

Example

> PDEtools:-Library:-ConstructTrivialSymmetry([_F1, _F2], [u], [x, t], prolongation = 0, jetnotation = jetvariables, differentialorder = 0);

 [_F1(x, t, u), _F2(x, t, u), _F1(x, t, u) u[x] + _F2(x, t, u) u[t]]

ContactCondition

ContactCondition(xi,eta,F,(Y := map2(op,0,F)),(X := GetIndepVars(F)),(nY := nops(Y)),{(jetnotation::identical(true,false,jetnumbers,jetvariables,jetvariableswithbrackets,jetODE) := 'jetvariableswithbrackets'), (normalizejetnotation::truefalse := true), (usephysics::truefalse := false)})


Parameters

* xi   - a list with the infinitesimals [xi[1], xi[x2], ...] in jetnumbers jetnotation, ordered according to the order of GetIndepVars(F)
* eta  - a list with the infinitesimals [eta[1], eta[x2], ...] in jetnumbers jetnotation, ordered according to the order of F
* F    - a list of unknown functions of the problem, the ones defining the jet space
* normalizejetnotation - optional, can be true (default) or false, to rewrite the input in jetvariableswithbrackets notation (necessary within this routine) before proceeding

Description: ContactCondition returns a sequence of equations representing the conditions to be satisfied by [xi[1], xi[2], ..., eta[1], eta[2], ...] in order to be a contact symmetry.

Example

> Xi, Eta := [_xi[x], _xi[t]](x, t, u[], u[x], u[t]), [_eta[u]](x, t, u[], u[x], u[t]);

# default output is in jetvariables notation
> PDEtools:-Library:-ContactCondition(Xi, Eta, [u(x,t)]);

  /  d                                 \
  |----- _eta[u](x, t, u[], u[x], u[t])|
  \du[x]                               /

           /  d                                \
         - |----- _xi[x](x, t, u[], u[x], u[t])| u[x]
           \du[x]                              /

           /  d                                \
         - |----- _xi[t](x, t, u[], u[x], u[t])| u[t],
           \du[x]                              /

        /  d                                 \
        |----- _eta[u](x, t, u[], u[x], u[t])|
        \du[t]                               /

           /  d                                \
         - |----- _xi[x](x, t, u[], u[x], u[t])| u[x]
           \du[t]                              /

           /  d                                \
         - |----- _xi[t](x, t, u[], u[x], u[t])| u[t]
           \du[t]                              /

# request output in jetnumbers
> PDEtools:-Library:-ContactCondition(Xi, Eta, [u(x,t)], jetnotation = jetnumbers);

  /  d                                 \
  |----- _eta[u](x, t, u[], u[1], u[2])|
  \du[1]                               /

           /  d                                \
         - |----- _xi[x](x, t, u[], u[1], u[2])| u[1]
           \du[1]                              /

           /  d                                \
         - |----- _xi[t](x, t, u[], u[1], u[2])| u[2],
           \du[1]                              /

        /  d                                 \
        |----- _eta[u](x, t, u[], u[1], u[2])|
        \du[2]                               /

           /  d                                \
         - |----- _xi[x](x, t, u[], u[1], u[2])| u[1]
           \du[2]                              /

           /  d                                \
         - |----- _xi[t](x, t, u[], u[1], u[2])| u[2]
           \du[2]                              /

# the input can be in jetnumbers notation
> Xi, Eta := PDEtools:-ToJet(Xi, u(x,t), jetnotation = jetnumbers), PDEtools:-ToJet(Eta, u(x,t), jetnotation = jetnumbers);

  Xi, Eta := [_xi[x](x, t, u[], u[1], u[2]), _xi[t](x, t, u[], u[1], u[2])]

        , [_eta[u](x, t, u[], u[1], u[2])]

# jetnotation for the output is still jetvariableswithbrackets unless requested otherwise passing jetnotation = ...
> PDEtools:-Library:-ContactCondition(Xi, Eta, [u(x,t)]);

  /  d                                 \
  |----- _eta[u](x, t, u[], u[x], u[t])|
  \du[x]                               /

           /  d                                \
         - |----- _xi[x](x, t, u[], u[x], u[t])| u[x]
           \du[x]                              /

           /  d                                \
         - |----- _xi[t](x, t, u[], u[x], u[t])| u[t],
           \du[x]                              /

        /  d                                 \
        |----- _eta[u](x, t, u[], u[x], u[t])|
        \du[t]                               /

           /  d                                \
         - |----- _xi[x](x, t, u[], u[x], u[t])| u[x]
           \du[t]                              /

           /  d                                \
         - |----- _xi[t](x, t, u[], u[x], u[t])| u[t]
           \du[t]                              /

Degree

Degree(EE,X,{(minmax::identical(min,max,both) := 'max'), (usephysics::Or(truefalse,identical("not given")) := "not given")})


Parameters

* EE  - any Maple algebraic object, or equation or a set or list of them
* X   - a name or a set of them
* minmax - optional, can be 'min', 'max' (default), or 'both', to request the minimal (equivalent to the lower degree), maximal degree with respect to X, or both (returns a sequence of two numbers)

Description: Degree computes the maximum degree of a set of equations EE with respect to variable(s) X. NOTE: if all the equations are equal to 0, the value returned is 0, not -infinity. When the degree cannot be computed, Degree returns FAIL.

Example

> PDEtools:-Library:-Degree({a, b^2, c^3}, {a, b, c});

                            3

DifforderJet

DifforderJet(ee_J,F,(Y := map2(op,0,`if`(F::'list',F,`if`(F::'set',[op(F)],[F])))),{(derivatives_J::{set(indexed), identical("not given")} := indets(ee_J,'specindex'('{name, posint}',Y))), (ivars::{name, set(name), identical("with respect to each of them","not given")} := select(type,{op(map(op,F))},'name')), (minmax::identical(min,max) := 'max'), (totaldifforder::truefalse := false)})


Parameters

* ee_J  - algebraic expression or an equation or a set or list of them, written in jet notation
* F    - a list of unknown functions of the problem, the ones defining the jet space
* ivars - optional, default to all the names entering functionality of functions in F, ivars can be a name or a set of them, or it can be the string "with respect to each of them", to request the differential order with respect to these 'ivars' variables, or alternatively returning the values 'with respect to each of them'
* derivatives_J - optional, default to all the derivatives of F in jetnumbers jetnotation, can be a (sub)set of them, to request the differential order only of that (sub)set
* minmax - optional, default to 'max', can also be 'min', to respectively request the maximum or minimum differential order
* totaldifforder - optional, to return only one number representing the total differential order of derivatives of F found in ee_j

Description: DifforderJet computes the (minimal or maximal) differential order of ee_J (given in jetnumbers jetnotation) with respect to each of the dependent variables (F).

Example

> PDEtools:-Library:-DifforderJet(u[1]*v[1,2] - u[2,2,2]*v[1,1,1], [u, v](x,t));

                         [u = 3, v = 3]
> PDEtools:-Library:-DifforderJet(u[1]*v[1,2] - u[2,2,2]*v[1,1,1], [u, v](x,t), minmax = min);

                         [u = 1, v = 2]
> PDEtools:-Library:-DifforderJet(u[1]*v[1,2] - u[2,2,2]*v[1,1,1], [u, v](x,t), totaldifforder);

                                3

Forget

Forget()


Parameters

* This command takes no parameters.

Description: Forget clears all the remember tables of the PDEtools commands and subroutines.

Example

> PDEtools:-Library:-Forget();

FromJetNumbersToJetVariables

FromJetNumbersToJetVariables(expr,F::list,{(withoutbrackets::truefalse := true)})


Parameters

* expr    - any mathematical expression
* F    - a list with the dependent variables
* withoutbrackets - optional, it can be true (default) or false, to return the dependent variables in jet notation without or with brackets

Description: FromJetNumbersToJetVariables returns the given expression after replacing jet numbers 1, 2, ... by the corresponding jet variables x, y, ... according to the order implicit in F.

Example

> PDEtools:-Library:-FromJetNumbersToJetVariables(u[1]*u[]+v[2,2]*u[1] = 0, [u,v](x,t));

                      u[x] u + v[t, t] u[x] = 0

FromJetVariablesToJetNumbers

FromJetVariablesToJetNumbers(expr,F::list,(X := map(op,F)))


Parameters

* expr    - any mathematical expression
* F    - a list with the dependent variables

Description: FromJetVariablesToJetNumbers returns the given expression after replacing jetvariables x, y, ... u, v, ... by the corresponding jet numbers according to the order implicit in F.

Example

> PDEtools:-Library:-FromJetVariablesToJetNumbers(u[x]*u[]+v[t,t]*u[x] = 0, [u,v](x,t));

                      u[1] u[] + v[2, 2] u[1] = 0

GenerateInfinitesimalLabels

GenerateInfinitesimalLabels(xi,eta,Y,X,{(jetnotation::identical(true,false,jetnumbers,jetvariables,jetvariableswithbrackets,jetODE) := 'jetnumbers'), (functionality::Or(list({name, function}),"not given") := "not given"), (prolongation::nonnegint := 0)})


Parameters

* xi    - a name to be used as root xi[q], for the infinitesimals related to transformations of the independent variables
* eta   - a name to be used as root eta[q], for the infinitesimals related to transformations of the dependent variables
* Y     - a list with the names of the dependent variables
* X     - a list with the independent variables (names)
* functionality - optional, a list with the functionality to be attached to the labels in the list of infinitesimal's labels returned
* jetnotation - optional, default is 'jetnumbers', can be any jet notation in use in PDEtools (see ?PDEtools:-ToJet)
* prolongation - optional, default is 0, can be any nonnegative integer

Description: GenerateInfinitesimalLabels returns a list of infinitesimal labels, prolonged to any order, that can be attached (e.g., using zip) to infinitesimals without labels, or just to understand the ordering implied when infinitesimasl are returned by other PDEtools commands without labels.

Example

> PDEtools:-Library:-GenerateInfinitesimalLabels(xi, eta, [u,v,w],[x,y,z], jetnotation = jetvariables);

            [xi[x], xi[y], xi[z], eta[u], eta[v], eta[w]]

> PDEtools:-Library:-GenerateInfinitesimalLabels(xi, eta, [u,v,w],[x,y,z], jetnotation = jetvariables, functionality = [x,y,z,u,v,w]);

  [xi[x](x, y, z, u, v, w), xi[y](x, y, z, u, v, w),

        xi[z](x, y, z, u, v, w), eta[u](x, y, z, u, v, w),

        eta[v](x, y, z, u, v, w), eta[w](x, y, z, u, v, w)]

> PDEtools:-Library:-GenerateInfinitesimalLabels(xi, eta, [u,v,w],[x,y,z], prolongation = 1);

  [xi[1], xi[2], xi[3], eta[1], eta[2], eta[3], eta[1, [1]],

        eta[2, [1]], eta[3, [1]], eta[1, [2]], eta[2, [2]],

        eta[3, [2]], eta[1, [3]], eta[2, [3]], eta[3, [3]]]

> PDEtools:-Library:-GenerateInfinitesimalLabels(xi, eta, [u,v,w],[x,y,z], prolongation = 2, jetnotation = jetvariables);

  [xi[x], xi[y], xi[z], eta[u], eta[v], eta[w], eta[u, [x]],

        eta[v, [x]], eta[w, [x]], eta[u, [y]], eta[v, [y]],

        eta[w, [y]], eta[u, [z]], eta[v, [z]], eta[w, [z]],

        eta[u, [x, x]], eta[v, [x, x]], eta[w, [x, x]],

        eta[u, [x, y]], eta[v, [x, y]], eta[w, [x, y]],

        eta[u, [x, z]], eta[v, [x, z]], eta[w, [x, z]],

        eta[u, [y, y]], eta[v, [y, y]], eta[w, [y, y]],

        eta[u, [y, z]], eta[v, [y, z]], eta[w, [y, z]],

        eta[u, [z, z]], eta[v, [z, z]], eta[w, [z, z]]]

GetCoefficients

GetCoefficients(sys,vars,{(undeterminedcoefficients := "not given"), (usephysics::truefalse := false)})


Parameters

* sys    - a system of algebraic expressions
* vars    - a set or list of algebraic objects, typically names
* undeterminedcoefficients - optional, a set of names, to select, in each of the coefficients being returned, the factors that contain these 'undeterminedcoefficients'

Description: GetCoefficients returns a set with the coefficients of vars, and of mathematical objects that have vars, found in sys.

Example

> PDEtools:-Library:-GetCoefficients({v2[3]*(v1[3]+v1[5]*y+2*v1[6]*x)+v2[2]*(v1[2]+2*v1[4]*y+v1[5]*x)+1}, {x, y});

  {2 v2[2] v1[4] + v2[3] v1[5], 2 v2[3] v1[6] + v2[2] v1[5],

        v2[3] v1[3] + 1 + v2[2] v1[2]}

> ee := {-y*exp(x)*(v[9]*ln(y)+v[12]*ln(x)+v[4]*x+2*v[15]*Ei(x)+2*v[13]*exp(x)*x), -y*((2*v[28]+x)*exp(x)^2+(ln(x)*v[27]+x*v[19]+ln(y)*v[24]+2*Ei(x)*v[30])*exp(x))}:

> PDEtools:-Library:-GetCoefficients(ee, [Ei(x), exp(x), ln(x), ln(y)]);

  {y v[9], y v[12], y v[15], y v[24], y v[27], y v[30],

        y (2 v[28] + x), y x v[19], y v[4] x, y v[13] x}

> PDEtools:-Library:-GetCoefficients(ee, [Ei(x), exp(x), ln(x), ln(y)], undeterminedcoefficients = [v]);

  {v[4], v[9], v[12], v[13], v[15], v[19], v[24], v[27], v[30], 2 v[28] + x}

GetDepVars

GetDepVars(DepVars,(PDESYS::{identical("not given"), {`<>`, `=`, algebraic, And(Or(set({`<>`, `=`, algebraic}),list({`<>`, `=`, algebraic})),satisfies(SL -> evalb(0 < nops(SL))))}} := "not given"),{(dependencytype::anything := `PDEtools/F(...)`), (onlydifferentiatedfunctions::truefalse := true), (removeDepVarsnotfoundinPDESYS::truefalse := false)})


Parameters

* DepVars   - a name or a function or a set or list of them, or the string "not given"
* PDESYS    - a differential (or not) equation, or a set or list, or the string "not given"
* dependencytype - optional, to consider a dependent variable only those of type 'function(dependencytype)'
* onlydifferentiatedfunctions   - optional, can be true (default) or false, when DepVars = "not given", consider dependent variable only those functions that are found in differentiated within PDESYS
* removeDepVarsnotfoundinPDESYS - optional, can be true or false (default), to discard dependent variables indicated in DepVars but not found in PDESYS

Description: GetDepVars checks for inconsistencies in the given DepVars with respect to given PDESYS and returns a list with the input DepVars after removing repeated elements, and when PDEsys is given it also replaces, in the given DepVars, names by the corresponding functions, optionally returning only the functions actually found in PDEsys.

Example

> PDEtools:-Library:-GetDepVars([u(x,t), v(x,t), w(x,t)], diff(u(x,t),x) = v(x,t));

                     [u(x, t), v(x, t), w(x, t)]

> PDEtools:-Library:-GetDepVars([u, v, w], diff(u(x,t),x) = v(x,t), removeDepVarsnotfoundinPDESYS);

                          [u(x, t), v(x, t)]

> PDEtools:-Library:-GetDepVars("not given", diff(u(x,t),x) = v(x,t));

                              [u(x, t)]

> PDEtools:-Library:-GetDepVars("not given", diff(u(x,t),x) = v(x,t), onlydifferentiatedfunctions = false);

                          [u(x, t), v(x, t)]

> PDEtools:-Library:-GetDepVars([u(x,t), v(x,t), w(x,t)], diff(u(x,t),x) = u(t, x));
  Error, (in PDEtools:-Library:-GetDepVars) unexpected functions with name [u] having different dependency: [[u(t,x), u(x,t)]]

GetDependency

GetDependency(dependency,PDESYS,(DepVars := "not given"),{(groupedbynumberofvariables::truefalse := false), (onlydifferentiatedfunctions::truefalse := true), (sortedbyascendingnumberofvariables::Or(truefalse,identical("not given")) := "not given"), (vars::{list(name), identical("not given")} := "not given")})


Parameters

* dependency   - an abstract indication of dependency (see the option dependencyofinfinitesimals in ?PDEtools:-InvariantSolutions)
* PDESYS       - a differential (or not) equation, or a set or list, or the string "not given"
* DepVars      - a name or a function or a set or list of them, or the string "not given"
* groupedbynumberofvariables  - optional, can be true or false (default), to return the list of dependencies with all its inner lists that thave the same number of variables enclosed with a list
* onlydifferentiatedfunctions - optional, can be true (default) or false, when 'vars' = "not given", consider dependent variable only those functions that are found in differentiated within PDESYS
* sortedbyascendingnumberofvariables - optional, can be true, false or "not given" (default), to sort the returned list of lists of dependencies by ascending or descending number of variables, and to not sort when it is "not given"
* vars - optional, a list of variables to be organized according to 'dependency'; if not given, it is derived from PDESYS and DepVars

Description: GetDependency returns a list of lists of function's dependencies, according to what is indicated in the first argument 'dependency' (see the option dependencyofinfinitesimals in ?PDEtools:-InvariantSolutions).

Example

> PDEtools:-Library:-GetDependency(1..2, PDESYS);

  [[x], [y], [z], [t], [u], [x, y], [x, z], [x, t], [x, u], [y, z],

        [y, t], [y, u], [z, t], [z, u], [t, u]]

> PDEtools:-Library:-GetDependency(1..2, vars = [x,y,z,t]);

  [[x], [y], [z], [t], [x, y], [x, z], [x, t], [y, z], [y, t], [z, t]]

> PDEtools:-Library:-GetDependency(1..2, PDESYS, groupedbynumberofvariables = true);

  [[[x], [y], [z], [t], [u]], [[x, y], [x, z], [x, t], [x, u], [y, z],

        [y, t], [y, u], [z, t], [z, u], [t, u]]]

> PDEtools:-Library:-GetDependency(1..2, PDESYS, sortedbyascendingnumberofvariables = false);

  [[x, y], [x, z], [x, t], [x, u], [y, z], [y, t], [y, u], [z, t],

        [z, u], [t, u], [x], [y], [z], [t], [u]]

GetExplicitSolutions

GetExplicitSolutions(F,{(discardDESol::truefalse := false), (discardODESolStruc::truefalse := false)})


Parameters

* F    - a set or list of unknowns
* _rest      - a sequence of equations or of sets of equations

Description: GetExplicitSolutions returns the equations and sets of equations of '_rest' such that the left-hand-sides are members of the list of unknowns 'F'.

Example

> PDEtools:-Library:-GetExplicitSolutions([a, u(x,t)], {a=1, u(x,t) = x}, {a-u(x,t) = 0});

                         {a = 1, u(x, t) = x}

GetFAndDiffVars

GetFAndDiffVars(df,{(usephysics::truefalse := false)})


Parameters

* df    - a derivative in diff, %diff or Diff notation

Description: If 'df' is a derivative in diff notation, GetFAndDiffVars returns a sequence: the derivand followed by all the differentiation variables, otherwise it returns the arguments received.

Example

> PDEtools:-Library:-GetFAndDiffVars(diff(diff(diff(diff(diff(u(x,t),t),t),x),x),x));

                        u(x, t), t, t, x, x, x

GetFunctionsWithDifferentDependency

GetFunctionsWithDifferentDependency(F,(Y := map2(op,0,F)))


Parameters

* F    - a list of distinct functions
* Y    - optional, a list of function's names positionally corresponding to the functions found in F

Description: GetFunctionsWithDifferentDependency returns a sequences of two lists, with the functions in F that have the same name but (being distinct) they have different functionality.

Example

> PDEtools:-Library:-GetFunctionsWithDifferentDependency([f(x), g(y), f(z), g(z), f(y)]);

              [f, g], [[f(x), f(z), f(y)], [g(y), g(z)]]

GetIndepVars

GetIndepVars(F)


Parameters

* F   - a list of unknown functions, or the string "not given"

Description: GetIndepVars returns the variables of type name found in F, typically representing independent variables, preserving the ordering found in the list F and after removing repeated elements.

Example

> PDEtools:-Library:-GetIndepVars([u(x,t), v(t,z), w(x,y,z)]);

                             [x, t, z, y]

GetInfinitesimals

GetInfinitesimals(S::list,(Y::{list(name), identical("not given")} := "not given"),(X::{list(name), identical("not given")} := "not given"),{(functionality::truefalse := false)})


Parameters

* S    - a list of infinitesimals
* Y    - the names of the dependent variables
* X    - the independent variables
* functionality - optional, to request the functionality found in the labels of the left-hand-sides of equations in 'S'

Description: GetInfinitesimals checks the syntax of a list of infinitesimals 'S' and either interrupts with an error message if there is something unepxected in it, or returns the given list unchanged when everything checks OK. When the option functionality is passed, the received list of infinitesimals is returned within a sequence of two elementes, where the second element is a list with the functionality of the functions found in the left-hand-sides of the received list of infinitesimals when they are given as equations [_xi[x](x,y,..) = ..., ], or the string "not present", when the infinitesimals were passed as a list of algebraic expressions, not equations.

Example

> PDEtools:-Library:-GetInfinitesimals([_xi[1](x,y,z,t,u[]) = 0, _xi[2](x,y,z,t,u[]) = 1, _xi[3](x,y,z,t,u[]) = 0, _xi[4](x,y,z,t,u[]) = 0, _eta[1](x,y,z,t,u[]) = 0], functionality);
  
  [_xi[1] = 0, _xi[2] = 1, _xi[3] = 0, _xi[4] = 0, _eta[1] = 0], [x, y, z, t, u[]]

GetJetVariables

GetJetVariables(sys,F::{list, set},{(applyToJet::truefalse := false), (includeindependentvariables::truefalse := true), (jetnotation::identical(true,false,jetnumbers,jetvariables,jetvariableswithbrackets,jetODE) := 'jetnumbers')})


Parameters

* sys    - an algebraic object or equation, or a set or list of them
* F      - a list of unknown functions defining the jet space
* includeindependentvariables  - optional, can be true (default) or false, to include the independent variables defining the jet space together with the dependent variables
* applyToJet                   - optional, can be true or false (default), to apply 'ToJet' to 'sys' before proceeding

Description: GetJetVariables returns the jet variables found in sys, using jetnumbers notation, taking F as the dependent variables of the problem.

Example

> PDEtools:-Library:-GetJetVariables(diff(u(x,t),x,x)*x+diff(u(x,t),x), {u(x,t)}, applyToJet);

                        {t, x, u[1], u[1, 1]}

GetNewDepAndIndepVars

GetNewDepAndIndepVars(NewVars,Y,X)


Parameters

* newVars  - a list of (new) unknown functions typically defininig a (new) jet space
* Y        - a list with the names of (old) unknown functions, typically defining an (old) jet space
* X        - a list with the names of (old) independent variables

Description: GetNewDepAndIndepVars returns two lists with respectively the same number of elements and type as Y and X, typically representing new variables, or an error message when some inconsistency is detected.

Example

> PDEtools:-Library:-GetNewDepAndIndepVars([u(r,s), v(r,s)], [y, z], [x, t]);

                            [u, v], [r, s]

> PDEtools:-Library:-GetNewDepAndIndepVars([u(r,s)], [y, z], [x, t]);

  Error, (in PDEtools:-Library:-GetNewDepAndIndepVars) expected an indication of 2 new dependent variables, received a list with only 1

> PDEtools:-Library:-GetNewDepAndIndepVars([u(r), v(r)], [y, z], [x, t]);

  Error, (in PDEtools:-Library:-GetNewDepAndIndepVars) expected to find at least 2 new independent variables in the dependency of the indicated new dependent variables, where there are only 1 independent variables

GetNew_Fn

GetNew_Fn(sol,PDE,(sorted::truefalse := true))


Parameters

* sol    - an algebraic object or a set or list of them, typically representing the solution to a differential equation system
* PDE    - an algebraic object or a set or list of them, typically representing the system for which 'sol' is a solution
* sorted  - can be true (default value if not given) or false, to sort or not the output list before returning
* applyToJet                   - optional, can be true or false (default), to apply 'ToJet' to 'sys' before proceeding

Description: GetNew_Fn returns the new _Fn arbitrary function's names entering sol and not found in PDE.

Example

> PDEtools:-Library:-GetNew_Fn(u(x,t) = Int((Int(_F1(x),x)+_F2(t))/x,x)+_F3(t), diff(u(x,t),x,x)*x+diff(u(x,t),x) = _F1(x));

                              [_F2, _F3]

GetNotation

GetNotation(ee,F::list,{(converttodiff::truefalse := false)})


Parameters

* ee    - any Maple object (but not a procedure)
* F     - a list of unknown functions
* converttodiff  - optional, can be true or false (default), to convert to diff notation before proceeding

Description: GetNotation returns a list with the jet notations found in 'ee', among: 'function', 'jetnumbers', 'jetvariables', 'jetvariableswithbrackets' and 'jetODE'.

Example

> PDEtools:-Library:-GetNotation(diff(u(x,t),x,x)*x + diff(u(x,t),x), [u(x,t)]);

                              [function]

> PDEtools:-Library:-GetNotation(u[x,x]*x + u[x], [u(x,t)]);

                            [jetvariables]

> PDEtools:-Library:-GetNotation(u[x,x]*x + u[x] + u[], [u(x,t)]);

                      [jetvariableswithbrackets]

> PDEtools:-Library:-GetNotation(u[x,x]*x + u[x] + u[1], [u(x,t)]);

                      [jetnumbers, jetvariables]

> PDEtools:-Library:-GetNotation(diff(y(x),x) = _y1, [y(x)]);

                          [function, jetODE]

GetPDESYS

GetPDESYS(PDESYS,{(notation::Or("as given",And(symbol,satisfies(s -> member(cat(s),'{:-D, :-diff}')))) := (NULL)[diff]), (equation_to_algebraic::truefalse := true)})


Parameters

* PDESYS - an algebraic object or equation, or a set or list of them
* notation               - optional, can be diff (default), D or the string "as given", to indicate the notation to use in the output list
* equation_to_algebraic  - optional, can be true (default) or false, to transform equations into the corresponding lhs - rhs in the output list.

Description: GetPDESYS returns a list with the input system after removing repeated elements mapping equations into lhs-rhs, optionally not performing that mapping.

Example

> PDEtools:-Library:-GetPDESYS([diff(u(x,t),x,x)*x+diff(u(x,t),x) = _F1(x), diff(u(x,t),x,x)*x+diff(u(x,t),x) - _F1(x)]);

               / 2         \
               |d          |     /d         \
              [|--- u(x, t)| x + |-- u(x, t)| - _F1(x)]
               |  2        |     \dx        /
               \dx         /

> PDEtools:-Library:-GetPDESYS([diff(u(x,t),x,x)*x+diff(u(x,t),x) = _F1(x), diff(u(x,t),x,x)*x+diff(u(x,t),x) - _F1(x)], notation = D);

            [D[1, 1](u)(x, t) x + D[1](u)(x, t) - _F1(x)]

GetProlongationValue

GetProlongationValue(infinitesimal_generator::{list, procedure},Y::list(name),X::list(name))


Parameters

* infinitesimal_generator    - a list of infinitesimals or an infinitesimal generator operator
* Y      - list with the names of the dependent variables defining the jet space
* X      - list with the names of the independent variables

Description: GetProlongationValue returns a nonegative integer representing the prolongation of the given infinitesimal.

Example

> PDEtools:-Library:-GetProlongationValue(f -> x*diff(f,x)+t*diff(f,t)+u*diff(f,u)-u[x,x]*diff(f,u[x,x]), [u], [x,t]);

                                  2

GetRepeatedNames

GetRepeatedNames(Y)


Parameters

* Y - a list with names, typically the names of functions defining a jet space

Description: GetRepeatedNames returns, in a set, the operands of Y that appear repeated.

Example

> PDEtools:-Library:-GetRepeatedNames([u, v, w, u]);

                                 {u}

GetSysUFYX

GetSysUFYX(PDESYS,DepVars,{(onlydifferentiatedfunctions::truefalse := true)})


Parameters

* PDESYS    - an algebraic object or equation, or a set or list of them, typically representing a differential equation system
* DepVars   - an unkonwn, or a set or list with the unknown functions of the problem
* onlydifferentiatedfunctions  - optional, can be true (default) or false, to include only the differentiated functions of PDESYS in the list of dependent variables within the sequence of objects returned

Description: GetSysUFYX returns a sequence of five objects: PDESYS in diff format, the unknown functions in it, the dependent variables according to DepVars, their names, and a list with the independent variables.

Example

> PDEtools:-Library:-GetSysUFYX(diff(u(x,t),x,x)*x+diff(u(x,t),x) = F(x), u(x,t));

 / 2         \
 |d          |     /d         \
[|--- u(x, t)| x + |-- u(x, t)| - F(x)], {F(x), u(x, t)}, [u(x, t)], [u], [x, t]
 |  2        |     \dx        /
 \dx         /

GetUnknownsAndDependency

GetUnknownsAndDependency(object,other_unknowns,F,(Y := map2(op,0,F)),{(jetnotation::identical(true,false,jetnumbers,jetvariables,jetvariableswithbrackets,jetODE) := 'jetvariableswithbrackets'), (dependencytype::anything := `PDEtools/F(...)`), (kind_of_object::{string, symbol} := "received object")})


Parameters

* object          - an algebraic object or equation, or a set or list of them
* other_unknowns  - an algebraic object or equation, or a set or list of them
* F               - a set or list of unknown functions to be excluded in the output
* dependencytype  - optional, a type indicating the type of function to be tested

Description: GetUnknownsAndDependency checks syntax of unknowns in 'object' and the absence of conflicts with 'other_unknowns' - for example functions with the same name but different dependency - then returns a sequence with two elements: the unknowns in object and a list with all their dependency.

Example

> PDEtools:-Library:-GetUnknownsAndDependency(diff(u(x,t),x,x)*x+diff(v(x,t),x), {v(x,t)}, [u(x,t)]);

                          {v(x, t)}, [x, t]

Gsolve

Gsolve(SYS,_F_,{(solver::identical("not given",pdsolve,dsolve,`ODEtools/Solve/EnvDropMultiplicity`,solve,fsolve,`ODEtools/Solve`,InvariantSolutions,SimilaritySolutions,PolynomialSolutions,FunctionFieldSolutions) := "not given"), (validsolvers := 'anything'), (explicitsolutions::{truefalse, identical(build)} := build), (DepVarswerederived::truefalse := false), (allowrecursingforfsolve::truefalse := true), (boundaryconditions::set({`=`, algebraic}) := {}), (build::truefalse := true), (convertindeterminedto_Fn::truefalse := false), (derivatives::{"not given", set} := "not given"), (differentiatedfuncs::{"not given", set} := "not given"), (dropmultiplicity::truefalse := true), (errormessage := "not given"), (getsolverusedonly::truefalse := false), (independentof::set(name) := {}), (ivarsused := "not given"), (numericsolution::truefalse := false), (pretendcasesplitans := false), (rankingused := "not given"), (seriessolution::truefalse := false)})


Parameters

* SYS   - an algebraic object or equation, or a set or list of them representing the system to be solved
* _F_   - the unknowns of the problem, it could be a symbol, or a function or a set or list of them
* explicitsolutions  - optional, can be true (default) or false, to only return solutions when they are explicit

Description: Gsolve is the generic internal solver of the symmetry commands of the PDEtools package, and of the PDEtools:-Solve command. Gsolve automatically handles pdes, odes or algebraic equations; by default it only returns explicit solutions.

Example

> PDEtools:-Library:-Gsolve(a+b=c, b);

                             {b = -a + c}

> PDEtools:-Library:-Gsolve(diff(u(x,t),x,x)*x+diff(v(x,t),x), [u,v](x,t));

                       d
               /   /   -- v(x, t)
              |   |    dx
  {u(x, t) =  |   |  - ---------- dx dx + _F1(t) x + _F2(t), v(x, t) = v(x, t)}
              |   |        x
             /   /

HasDependency

HasDependency(sol::`=`,DEP::{list(name), set(name)})


Parameters

* sol    - an equation
* DEP    - a set or list of names

Description: HasDependency returns true or false, according to whether the right-hand-side of sol depends on all the names indicated in DEP.

Example

> PDEtools:-Library:-HasDependency(f(x,y,z) = x*y + g(x,y), [x,y,z]);

                                false

> PDEtools:-Library:-HasDependency(f(x,y,z) = x*y + g(x,z), [x,y,z]);

                                 true

HasDerivatives

HasDerivatives(ee,DY,(F := indets({DY, ee},'`PDEtools/F(...)`')),{(derivatives_ee::{set(specfunc(anything,[diff, Physics:-diff])), identical(NULL)} := NULL), (gotofunctionnotation::truefalse := true), (usephysics::truefalse := false)})


Parameters

* ee    - an algebraic object or equation, or a set or list of them
* DY    - a derivative in jetnotation, or in function notation using diff, possibly of order zero (i.e. an unknown function), or set or list of them
* F     - a list of unknown functions defining a jet space, to be used when ee is passed in jet notation
* gotofunctionnotation  - optional, can be true (default) or false, to rewrite ee from jet notation to function notation before proceeding

Description: HasDerivatives returns true or false, according to whether derivatives of ee are derivatives of derivatives of DY.

Example

> PDEtools:-Library:-HasDerivatives(u[x,x,t]*x+u[x], diff(u(x,t), x,t));

                                 true

> PDEtools:-Library:-HasDerivatives(diff(u(x,t), x,x,t)*x + diff(u(x,t), x), diff(u(x,t), x,t));

                                 true

> PDEtools:-Library:-HasDerivatives(u[x,x,t]*x+u[x], u[t,x], u(x,t));

                                 true

> PDEtools:-Library:-HasDerivatives(u[x,x,t]*x+u[x], u[t,t], u(x,t));

                                 false

HideFalseDerivatives

HideFalseDerivatives(sys)


Parameters

* sys  - an algebraic object or equation, or a set or list of them

Description: HideFalseDerivatives returns a sequence of two objects: sys after hiding in it the false derivatives (DESol, ODESolStruc and PDESolStruc functions) and the equations to use to restore them.

Example

> PDEtools:-Library:-HideFalseDerivatives(f(x) = DESol({diff(y(x),`$`(x,3))-y(x)},{y(x)}) + ODESolStruc(f(b), [{diff(f(b),b)=c}, {b=x, f(b)=y(x)}, {x=b, y(x) = f(b)}]));

    f(x) = _DES1(x) + _ODE1(x),
                          / 3      \
                          |d       |
       {_DES1(x) = DESol({|--- y(x)| - y(x)}, {y(x)}),
                          |  3     |
                          \dx      /

                            d
   _ODE1(x) = f(b) &where [{-- f(b) = c}, {b = x, f(b) = y(x)}, {x = b, y(x) = f(b)}]}
                            db

InfinitesimalGeneratorToList

InfinitesimalGeneratorToList(G::procedure,F::list,(Y := map2(op,0,F)),(X := GetIndepVars(F)),{(jetnotation := "not given"), (prolongation::{nonnegint, identical("not given")} := "not given")})


Parameters

* G   - an infinitesimal generator operator (a Maple procedure)
* F   - a list of unknown functions defining the jet space
* prolongation  - optional, a nonegative integer indicating the prolongation order of the returned list of infinitesimals
* jetnotation   - optional, it's default value is the notation found in G, used to indicated an alternative notation among: jetvariables, jetvariableswithbrackets, jetnumbers or jetODE

Description: InfinitesimalGeneratorToList receives an infinitesimal generator operator (a differential operator) and returns the corresponding list of infinitesimals; in that sense this command implements the inverse operation of PDEtools:-InfinitesimalGenerator.

Example

> PDEtools:-Library:-InfinitesimalGeneratorToList(f -> diff(f,x)/u[x] + t*u[t,t]*diff(f, u) - x*u[t]*diff(f, u[x,t]), [u(x,t)]);

                1
              [----, 0, t u[t, t], 0, 0, 0, -x u[t], 0]
               u[x]

> PDEtools:-Library:-InfinitesimalGeneratorToList(f -> diff(f,x)/u[x] + t*u[t,t]*diff(f, u) - x*u[t]*diff(f, u[x,t]), [u(x,t)], jetnotation = jetnumbers);

                1
              [----, 0, t u[2, 2], 0, 0, 0, -x u[2], 0]
               u[1]

IsAutonomousPDE

IsAutonomousPDE(PDESYS,F)


Parameters

* PDESYS - a set or list of algebraic expressions or equations
* F      - a set or list of unknowns

Description: IsAutonomousPDE returns true or false, according to whether PDESYS is autonomous; i.e. the independent variables in PDESYS appear only through the dependent variables.

Example

> PDEtools:-Library:-IsAutonomousPDE({diff(u(x,t),x,x) * x + diff(u(x,t),x)}, {u(x,t)});

                                false

> PDEtools:-Library:-IsAutonomousPDE({diff(u(x,t),x,x) * u(x,t) + diff(u(x,t),x)}, {u(x,t)});

                                 true

IsHigherDerivative

IsHigherDerivative(a,b,(X := "not given"))


Parameters

* a  - an indexed name where the index is a positive integer, typically representing a derivative in jetnumbers notation
* b  - same as a

Description: IsHigherDerivative returns true or false, according to whether `a` is a derivative of higher or equal order than `b`, where `a` and `b` are indexed objects typically representing derivatives in jet numbers notation.

Example

> PDEtools:-Library:-IsHigherDerivative(v[1,1,1], v[2,2]);

                                 true

> PDEtools:-Library:-IsHigherDerivative(u[2,2], v[1,1,2]);

                                false

IsLinearPDE

IsLinearPDE(PDESYS,F)


Parameters

* PDESYS - a set or list of algebraic expressions or equations
* F      - an unknown, or a set or list of them

Description: IsLinearPDE returns true or false, according to whether PDESYS is linear in F and its derivatives.

Example

> PDEtools:-Library:-IsLinearPDE({diff(u(x,t),x,x) * x + diff(u(x,t),x)^2}, {u(x,t)});

                                true

> PDEtools:-Library:-IsLinearPDE({diff(u(x,t),x,x) * u(x,t) + diff(u(x,t),x)}, {u(x,t)});

                                 false

IsPointSymmetry

IsPointSymmetry(S,F::list(`PDEtools/F(...)`),(Y := map2(op,0,F)),(X := GetIndepVars(F)))


Parameters

* S  - a list of symmetry infinitesimals
* F  - a list of unknowns defining the jet space

Description: IsPointSymmetry returns true or false, according to whether S is a list of point symmetry infinitesimals taking F as the unknowns of the problem.

Example

> PDEtools:-Library:-IsPointSymmetry([xi[x] = 0, xi[t]=1, eta[u]=x/u], [u(x,t)]);

                                 true

> PDEtools:-Library:-IsPointSymmetry([xi[x] = 0, xi[t]=1, eta[u]=x/u[x]], [u(x,t)]);

                                false

> PDEtools:-Library:-IsPointSymmetry([xi[x] = 0, xi[t] = 1, eta[u] = x/diff(u(x,t),x)], [u(x,t)]);

                                false

IsReducible

IsReducible(sys1,sys2::{`=`, list(`=`), set(`=`)},F,(Y := map2(op,0,F)),{(rewriteinjetvariables::truefalse := true), (tryhasYshortcut::truefalse := true)})


Parameters

* sys1   - an algebraic object or equation, or a set or list of them, typically representing a differential equation system
* sys2   - an equation, or a set or list of them, typically representing another differential equation system
* F     - a list with the unknown functions of the problem
* rewriteinjetvariables  - optional, can be true (default) or false, to rewrite sys1 and sys2 in jetvariables notation before proceeding
* tryhasYshortcut      - optional, can be true (default) or false, to check first whether sys1 and 'has' any of the function names of F, as a shortcut for 'false'

Description: IsReducible returns true or false, according to whether any of the derivatives found in sys1 is reducible by any derivative found in left-hand-sides of sys2.

Example

> PDEtools:-Library:-IsReducible({u[x,x,t]*x+u[x]}, {u[x,t] = 0}, [u(x,t)]);

                                 true

> PDEtools:-Library:-IsReducible({diff(u(x,t), x,x,t) * x + diff(u(x,t), x)}, {diff(u(x,t), x,t)=0}, [u(x,t)]);

                                 true

> PDEtools:-Library:-IsReducible({diff(u(x,t), x,x,t) * x + diff(u(x,t), x)}, {diff(u(x,t), t,t)=0}, [u(x,t)]);

                                false

JetNumbersToJetVariables

JetNumbersToJetVariables(n::Or(posint,list({name, posint}),name),Q::list(name))


Parameters

* n  - a positive integer or a list of them typically representing jet numbers
* Q  - a list of names typically representing 'all' the variables of a jet space

Description: JetNumbersToJetVariables returns the jet variable (or the list of jet variables) corresponding to the jet number(s) q within Q.

Example

> PDEtools:-Library:-JetNumbersToJetVariables([1, 2, 3], [x, t, u]);

                              [x, t, u]

> PDEtools:-Library:-JetNumbersToJetVariables([2, 1, 3], [x, t, u]);

                              [t, x, u]

JetVariablesToJetNumbers

JetVariablesToJetNumbers(q::Or(name,list({name, posint}),posint),Q::list(name))


Parameters

* q  - a name or a list of names typically representing jet variables
* Q  - a list of names typically representing 'all' the variables of a jet space

Description: JetVariablesToJetNumbers returns the position (or the list of positions) of q within Q, representing the corresponding jet numbers.

Example

> PDEtools:-Library:-JetVariablesToJetNumbers([x, t, u], [x, t, u]);

                              [1, 2, 3]

> PDEtools:-Library:-JetVariablesToJetNumbers([t, u, x], [x, t, u]);

                              [2, 3, 1]

MapHintIntoPDESolution

MapHintIntoPDESolution(hinted_solution::set({name, function}),forbbiden_symbols)


Parameters

* hinted_solution   - a set of names or functions to be mapped into arbitrary constants and functions
* forbbiden_symbols - any Maple object containing names not to enter the right-hand-sides of the returned equations

Description: MapHintIntoPDESolution returns a set with equations where each name or function in hinted_solution is equated to an arbitrary constant or function as in - say - f into f, f() into _C1, and f(x) into _F1(x).

Example

> PDEtools:-Library:-MapHintIntoPDESolution({f, _xi[1](), _xi[2](), _eta[1](), _eta[2](x,y)}, [_C1, _F1]);

  {f = f, _xi[1]() = _C2, _xi[2]() = _C3, _eta[1]() = _C4, _eta[2](x, y) = _F2(x, y)}

NormalizeBoundaryConditions

NormalizeBoundaryConditions(BC0::Or(set({algebraic, equation}),list({algebraic, equation})),F::list(And(function,Not(`PDEtools/known_function`))),{(allowmanyimplicitbc::truefalse := false), (homogeneousformat::truefalse := false)})


Parameters

* BC0    -  set of boundary conditions as equations or algebraic expressions containing the unknowns F (second argument) and possibly their partial derivatives evaluated at points
* F      - a list of unknown functions

Description: NormalizeBoundaryConditions returns the given set of boundary conditions after verifying the conditions for syntactic correctness and normalizing them by rewritting in D notation and solving for F and their derivatives evaluated at points.

Example

> e1 := {v(x,0)+u(0,0) = 1+x*f(x)+c[0], v(x,0)-u(0,0) = 1+x*f(x)-c[0], 3*v(x,0)-D[2](u)(x,0) = 3+3*x*f(x)-D[2](u)(x,0), D[1,1](u)(0,0)(x,y)-diff(u(x,y),y) = -c[2], D[2,2](u)(0,0)(x,y)+diff(u(x,y),`$`(x,2)) = -1};

  e1 := {v(x, 0) - u(0, 0) = 1 + x f(x) - c[0],

        v(x, 0) + u(0, 0) = 1 + x f(x) + c[0],

        3 v(x, 0) - D[2](u)(x, 0) = 3 + 3 x f(x) - D[2](u)(x, 0),

                                 /d         \
        D[1, 1](u)(0, 0)(x, y) - |-- u(x, y)| = -c[2],
                                 \dy        /

                                 / 2         \
                                 |d          |
        D[2, 2](u)(0, 0)(x, y) + |--- u(x, y)| = -1}
                                 |  2        |
                                 \dx         /

> PDEtools:-Library:-NormalizeBoundaryConditions(e1, [u, v](x, y));

  {u(0, 0) = c[0], v(x, 0) = 1 + x f(x),

        D[2](u)(x, y) = D[1, 1](u)(0, 0)(x, y) + c[2],

        D[1, 1](u)(x, y) = -D[2, 2](u)(0, 0)(x, y) - 1}

Normalize_Fn_Cn

Normalize_Fn_Cn(sol::{list, set},{(ignore_Cn::truefalse := false), (ignore_Fn::truefalse := false), (set_F_C_in_use::truefalse := true), (symbolsininput::set(symbol) := "not given"), (symbolsinsol::set(symbol) := "not given"), (update_Cn::truefalse := true), (update_Fn::truefalse := true)})


Parameters

* sol - a set or list of algebraic objects or equations, typically representing the solution of a system of differential equations, where _Fn functions and _Cn constants are to be normalized
* ignore_Fn  - optional, to ignore the arbitrary _Fn functions and normalize only the arbitrary _Cn constants
* ignore_Cn  - optional, to ignore the arbitrary _Cn constants and normalize only the _Fn arbitrary functions
* update_Fn  - optional, can be true (default) or false, to correspondingly update or not the values of _Fn being introduced when moving from one equation to the next one in sol
* update_Cn  - optional, can be true (default) or false, to correspondingly update or not the values of _Cn being introduced when moving from one equation to the next one in sol

Description: Normalize_Fn_Cn returns sol2 where sol2 is sol after normalizing the _Cn arbitrary constants and _Fn arbitrary functions by renumbering them as low as possible and in sequence. If nothing is to be done, sol2 = sol.

Example

> sol := {y(x,t) = _C2*x + _F5(t), f(x,t) = _C2 + _F7(x*t)}:

> PDEtools:-Library:-Normalize_Fn_Cn(sol);

          f(x, t) = _C1 + _F1(x t), y(x, t) = _C2 x + _F2(t)

> PDEtools:-Library:-Normalize_Fn_Cn(sol, update_Fn = false);

          f(x, t) = _C1 + _F1(x t), y(x, t) = _C2 x + _F1(t)

> PDEtools:-Library:-Normalize_Fn_Cn(sol, update_Cn = false);

          f(x, t) = _C1 + _F1(x t), y(x, t) = _C1 x + _F2(t)

> PDEtools:-Library:-Normalize_Fn_Cn(sol, update_Cn = false, update_Fn = false);

          f(x, t) = _C1 + _F1(x t), y(x, t) = _C1 x + _F1(t)

PartialDerivatives

PartialDerivatives(F0::{list, name},(dx_difforder := []),{(maxdifforder::nonnegint := `+`(op(dx_difforder))), (nX::nonnegint := nops(dx_difforder)), (includeorderzero::truefalse := false), (onlyhigherorder::truefalse := false)})


Parameters

* F0            - a function name
* dx_difforder  - optional, a list of numbers representing differential order with respect to each independent variable
* nX = ..            - optional, the right-hand-side is a positive number indicating the number of independent variables
* maxdifforder = .. - optional, the right-hand-side is a positive number indicating the maximum differential order; default value is the sum of the numbers in dx_difforder
* includeorderzero - optional, can be true or false (default), to include derivatives of order zero, that is the functions themselves
* onlyhigherorder - optional, can be true or false (default), to return only the partial derivatives of higher order (maxdifforder)

Description: PartialDerivatives returns a sequence of F0[n, m, ...], representing derivatives in jetnotation = jetnumbers, where n, m, ... are not bigger than the differential orders specified in dx_diff_order, and the total differential order is not bigger than the optionally specified maxdifforder.

Example

> PDEtools:-Library:-PartialDerivatives(u, nX=2, maxdifforder = 3);

  u[1], u[2], u[1, 1], u[1, 2], u[2, 2], u[1, 1, 1], u[1, 1, 2],

        u[1, 2, 2], u[2, 2, 2]

> PDEtools:-Library:-PartialDerivatives(u, [1,1,3]);

  u[1], u[2], u[3], u[1, 2], u[1, 3], u[2, 3], u[3, 3], u[1, 2, 3],

        u[1, 3, 3], u[2, 3, 3], u[3, 3, 3], u[1, 2, 3, 3],

        u[1, 3, 3, 3], u[2, 3, 3, 3], u[1, 2, 3, 3, 3]

> PDEtools:-Library:-PartialDerivatives(u, [1,1,3], maxdifforder = 3);

  u[1], u[2], u[3], u[1, 2], u[1, 3], u[2, 3], u[3, 3], u[1, 2, 3],

        u[1, 3, 3], u[2, 3, 3], u[3, 3, 3]

> PDEtools:-Library:-PartialDerivatives(u, [1,1,3], maxdifforder = 3, onlyhigherorder);

            u[1, 2, 3], u[1, 3, 3], u[2, 3, 3], u[3, 3, 3]

> PDEtools:-Library:-PartialDerivatives(u, nX = 3, maxdifforder = 3, onlyhigherorder);

  u[1, 1, 1], u[1, 1, 2], u[1, 1, 3], u[1, 2, 2], u[1, 2, 3],

        u[1, 3, 3], u[2, 2, 2], u[2, 2, 3], u[2, 3, 3], u[3, 3, 3]

ProfitableSymmetry

ProfitableSymmetry(S,F,(Y::list(name) := map2(op,0,F)),(nY::posint := nops(Y)),{(characteristicQ::assignable := NULL)})


Parameters

* S  - is a list of symmetry infinitesimals
* F  - a list of unknown functions defining the jet space
* characteristicQ  - optional, of type 'assignable', to be assigned the value of CharacteristicQ(S, F, ':-jetnotation' = ':-jetnumbers')

Description: ProfitableSymmetry returns true or false, according to whether S is a profitable symmetry, i.e., one that can be used to diminish the number of independent variables. For Q = CharacteristicQ(S, F, ':-jetnotation' = ':-jetnumbers'), if any of the Q(j) (j=1..nops(F)) does not depend on derivatives of F, then the symmetry is not profitable. Equally, if a symmetry in evolutionary form does not depend on derivatives of F then it is not profitable.

Example

> PDEtools:-Library:-ProfitableSymmetry([t, 0, t*u[x]+u], [u(x,t)]);

                                false

> PDEtools:-Library:-ProfitableSymmetry([t, 1, t*u[x]+u], [u(x,t)]);

                                 true

PutInfinitesimalLabels

PutInfinitesimalLabels(S::list(algebraic),F,(Y := map2(op,0,F)),(X := GetIndepVars(F)),{(functionality::Or(list({name, function}),"not given") := "not given"), (jetnotation::identical(true,false,jetnumbers,jetvariables,jetvariableswithbrackets,jetODE) := true), (prolongation::{nonnegint, identical("not given")} := "not given"), (xi_eta::[name, name] := '[_xi, _eta]')})


Parameters

* S  - is a list of symmetry infinitesimals
* F  - a list of unknown functions defining the jet space
* xi_eta = ...        - optional, the right-hand-side is a list with two names to be used as roots of infinitesimal labels
* jetnotation = ...   - optional, default is notation found in S, can be any jet notation in use in PDEtools (see ?PDEtools:-ToJet)
* prolongation = ...  - optional, a positive integer indicating the prolongation order, default is the prolongation of S

Description: PutInfinitesimalLabels returns the given list of infinitesimals after transforming each infinitesimal into an equation, where the rhs is the infinitesimal itself and the lhs is an infinitesimal label identifying the infinitesimal.

Example

> PDEtools:-Library:-PutInfinitesimalLabels([t, 0, t*u[x]+u], [u(x,t)]);

            [_xi[x] = t, _xi[t] = 0, _eta[u] = t u[x] + u]

RecycleArguments

RecycleArguments(arguments::list,command,argspassed::list)


Parameters

* arguments   - a list of arguments of 'command' to be recycled
* command     - a Maple command that has options implemented as 'keyword parameters' (see ?parameter_classes)
* argspassed  - all the arguments received by command

Description: RecycleArguments applies 'command' to the args passed after having recycled the elements of the first list ('arguments'). The recycling consists of matching the elements of the first list 'arguments' against the optional keyword parameters accepted by 'command' and when there is a single match proceed replacing the element by the match found. When there is more than one match, RecycleArguments instead returns just the sequence of possible matches. When there is no match, RecycleArguments interrupts with a corresponding error message.

Example

> PDEtools:-Library:-RecycleArguments([type = polynomial, dis=false], PDEtools:-Infinitesimals, [diff(y(x),x), y(x), type = polynomial, dis=false]);

     * Partial match of  'type' against keyword 'typeofsymmetry'
     * Partial match of  'dis' against keyword 'displayfunctionality'

  [_xi[x] = 1, _eta[y] = 0], [_xi[x] = x, _eta[y] = 0],

        [_xi[x] = 0, _eta[y] = 1], [_xi[x] = y, _eta[y] = 0],

        [_xi[x] = 0, _eta[y] = y]

> PDEtools:-Library:-RecycleArguments([check, type = polynomial, dis=false], PDEtools:-Infinitesimals, [diff(y(x),x), y(x), check, type = polynomial, dis=false]);

  * Partial or misspelled keyword matches more than one possible eyword. Please select the correct one from below and try again.

                 checkconsistency, checkdegreesyntax

> PDEtools:-Library:-RecycleArguments([ches, type = polynomial, dis=false], PDEtools:-Infinitesimals, [diff(y(x),x), y(x), ches, type = polynomial, dis=false]);

  Error, (in PDEtools:-Library:-RecycleArguments) too many and/or wrong type of arguments passed; first unused argument is: ches

SelectRemoveSpecializable_Fn_Cn

SelectRemoveSpecializable_Fn_Cn(L_Fn_Cn::list,SOL,{(allowzero::truefalse := false)})


Parameters

* L_Fn_Cn  - a list of _Fn functions and/or _Cn constants, where n is an integer, introduced by pdsolve and dsolve in the solutions they return
* SOL      - a set or list of expressions or equations containing the elements of L_Fn_Cn, typically representing the solution of a differential equation system
* allowzero  - optional, can be true or false (default), to consider 'specializable' an object that, when specialized, it cancels other _Fn or _Cn objects in SOL, or perhaps cancels SOL entirely

Description: SelectRemoveSpecializable_Fn_Cn returns two lists obtained splitting L_Fn_Cn into that can (first list) and cannot (second list) be specialized attributing value 0. A _Fn function or _Cn constant cannot be specialized when it leads to division by zero or its specialization automatically removes another _Cn or _Fn from 'SOL'.

Example

> SOL := u(x,t) = (x/_C1 + _C2*_F1(x+t))*_F2(t):

> PDEtools:-Library:-SelectRemoveSpecializable_Fn_Cn([_C1, _C2, _F1, _F2], SOL);

                       [], [_C1, _C2, _F1, _F2]

> PDEtools:-Library:-SelectRemoveSpecializable_Fn_Cn([_C1, _C2, _F1, _F2], SOL, allowzero);

                        [_C2, _F1, _F2], [_C1]

SortDerivatives

SortDerivatives(dY::list(indexed(posint)),Y::list(name))


Parameters

* dY  - a list of elements of type 'indexed(posint)' typically representing derivatives in jetnumbers notation
* Y   - a list of names, typically the names of the unknown functions defining the jet space

Description: SortDerivatives returns the list dY after sorting it, ascending with respect to differential order (number of indexes); if two derivatives are of the same order then sort and according to the order in the list Y, and if both derivatives are related to the same name in Y then sort according to the order of independent variables (for jet numbers that is equivalent to sort by `<`).

Example

> PDEtools:-Library:-SortDerivatives([v[2,2,3], u[1,2], v[1,2,3], v[1,1], v[]], [u, v]);

           [v[], u[1, 2], v[1, 1], v[1, 2, 3], v[2, 2, 3]]

Specialize_Cn

Specialize_Cn(sol,(excluded::{list(And(symbol,suffixed(_C,nonnegint))), set(And(symbol,suffixed(_C,nonnegint)))} := {}),{(allowzero::truefalse := false)})


Parameters

* sol      - an algebraic expression or equation, or a set or list of them, typically representing the solution of a differential equation system containing arbitrary constants _Cn introduced by dsolve
* excluded - a set of _Cn constants to be excluded from the specialization process
* allowzero  - optional, can be true or false (default), to 'specialize' a _Cn even if, in doing so, it cancels the terms that contain other _Cn constants

Description: Specialize_Cn returns a list of objects obtained specializing the _Cn not found in excluded, making all of them but one equal to zero, and the remaining one equal to 1. In addition, all _Cn that, when substituted by zero, produce division by zero, are also specialized to 1.

Example

> sol := u(x,t) = (x/_C1 + _C2 + _C3*(x + _C4)):

> PDEtools:-Library:-Specialize_Cn(sol);

                 u(x, t) = 2 x + 1, u(x, t) = 2 x + 1

> PDEtools:-Library:-Specialize_Cn(sol, allowzero);

             u(x, t) = x + 1, u(x, t) = 2 x, u(x, t) = x

Specialize_Fn

Specialize_Fn(sol,(excluded::{list(And(symbol,suffixed(_F,nonnegint))), set(And(symbol,suffixed(_F,nonnegint)))} := {}),{(allowzero::truefalse := false), (specializations::{list(procedure), set(procedure), identical("not given")} := "not given")})


Parameters

* sol      - an algebraic expression or equation, or a set or list of them, typically representing the solution of a differential equation system containing arbitrary functions _Fn(...) introduced by pdsolve
* excluded - a set of arbitrary functions _Fn to be excluded from the specialization process
* allowzero  - optional, can be true or false (default), to 'specialize' a _Cn even if, in doing so, it cancels the terms that contain other _Cn constants

Description: Specialize_Fn returns a list of objects obtained specializing the _Fn(...) not found in excluded, making all of them but one equal to zero, and the remaining one equal to each of its arguments.

Example

> sol := u(x,t) = (x/_F1(x) + _C2 + _F3(x*t + _C4)):

> PDEtools:-Library:-Specialize_Fn(sol);

         u(x, t) = x + _C2 + 1, u(x, t) = x + _C2 + x t + _C4

> PDEtools:-Library:-Specialize_Cn(sol, allowzero);

               x                                x
   u(x, t) = ------ + 1 + _F3(x t), u(x, t) = ------ + _F3(x t + 1)
             _F1(x)                           _F1(x)

ToSameVariables

ToSameVariables(SYS,(F := GetDepVars("not given",SYS,'onlydifferentiatedfunctions = false')),(X := GetIndepVars(F)),{(converttodiff::truefalse := false), (includingzeroderivatives::truefalse := true)})


Parameters

* SYS - an algebraic object or equation, or a set or list of them
* F   - optional - a list of unknown functions defining the jet space, if not given they are derived from SYS
* X   - optional - a list of independent variables, if not given it is derived from F
* includingzeroderivatives  - optional, can be true (default) or false, to include, in the second list in the output, the derivatives that are equal to zero, that are a consequence of having augmented the functionality of some of the functions of F
* converttodiff             - optional, can be true or false (default), to convert SYS to diff notation before proceeding

Description: ToSameVariables returns a sequence of three objects: SYS rewritten with all its functions depending on the same variables, then a list with the extra derivatives equal to zero implied by the conversion, and next another list of equivalences with the old and new functions respectively in the left and right hand sides.

Example

> PDEtools:-Library:-ToSameVariables(u(x)+v(t),[u(x), v(t)],[x, t]);

                      d           d
  u(x, t) + v(x, t), [-- u(x, t), -- v(x, t)],
                      dt          dx

        [u(x) = u(x, t), v(t) = v(x, t)]

> PDEtools:-Library:-ToSameVariables(u(x)+v(t),[u(x), v(t)],[x, t], includingzeroderivatives = false);

       u(x, t) + v(x, t), [], [u(x) = u(x, t), v(t) = v(x, t)]

UpperBounds

UpperBounds(PDESYS,F,(X::list(name) := GetIndepVars(F)),{(increasefornonautonomous::truefalse := true)})


Parameters

* PDESYS  - a PDE system; it can contain PDEs, ODEs, and also non-differential equations
* F       - a list of the unknown functions of PDESYS
* increasefornonautonomous  - optional, can be true (default) or false, to increase the upper bounds by 1 in the presence of nonautonomous equations in PDESYS

Description: UpperBounds returns a sequence of sets of equations, where the lhs is a function of F and the rhs is an upper bound for the degree of a solution polynomial in the independent variables.

Example

> sys := diff(f(x,y),x)*diff(g(y),y) + diff(f(x,y),y)*diff(g(y),y) + f(x,y)*(diff(f(x,y),x,x) + diff(f(x,y),y,y)) = x*y:

> PDEtools:-Library:-UpperBounds(sys, [f(x,y), g(y)]);

                       {f(x, y) = 3, g(y) = 2}

> PDEtools:-Library:-UpperBounds(sys, [f(x,y), g(y)], increasefornonautonomous = false);

                       {f(x, y) = 2, g(y) = 1}

YBracketsToY

YBracketsToY(ans,Y)


Parameters

* ans  - an algebraic expression, equation, or a set or list of them
* Y    - a list with the names, typically the names of the unknown functions definining a jet space

Description: YBracketsToY returns ans after replacing objects of the form y[] by y, where y is a member of Y.

Example

> PDEtools:-Library:-YBracketsToY(f[]*g[]+f[y]*g[]+f[]*(f[x,x]+f[y,y]), [f, g]);

                 f g + f[y] g + f (f[x, x] + f[y, y])

YToYBrackets

YToYBrackets(ans,Y)


Parameters

* ans  - an algebraic expression, equation, or a set or list of them
* Y    - a list with the names, typically the names of the unknown functions definining a jet space

Description: YBracketsToY returns ans after replacing objects of the form y by y[], where y is a member of Y.

Example

> PDEtools:-Library:-YToYBrackets(f*g+f[y]*g+f*(f[x,x]+f[y,y]), [f, g]);

             f[] g[] + f[y] g[] + f[] (f[x, x] + f[y, y])

See Also

PDEtools

Physics