Overview - Maple Help

Overview of the LHPDO Object

Description

 • The LHPDO object is designed and created to represent linear homogeneous partial differential operators (LHPDOs).
 • There is a collection of methods that are available for a LHPDO object, including (i) method allowing the LHPDO object to act as an operator / function  (ii) methods for exploring properties of LHPDO (e.g. specification of domain and codomain). Some existing Maple builtins are extended for allowing LHPDO object.
 • All methods of the LHPDO object become available only once a valid LHPDO object is constructed successfully. To construct a LHPDO object, see LieAlgebrasOfVectorFields[LHPDO].
 • The LHPDO object is exported by the LieAlgebrasOfVectorFields package. See Overview of the LieAlgebrasOfVectorFields package for more detail.
 • A LHPDO Delta acts as an operator on an $m$-tuple $\left(m\ge 1\right)$ of scalar expressions, mapping it to an $s$-tuple $\left(s\ge 0\right)$ of scalars. Thus the input to Delta is a list of $m$ elements, and it returns a list of $s$ elements.  Each component of Delta takes linear homogeneous combinations of derivatives of the inputs.
 • The "independent variables" (with respect to which the inputs may be differentiated) may be accessed via the GetIndependents method. The integers $m$,$s$ respectively are accessed via the GetDependentsCount and GetSystemCount methods. The inputs may be functions of some subset of the independent variables; the dependencies allowed for the inputs may be accessed via the GetDependencies method.
 • After a LHPDO object Delta is successfully constructed, each method of Delta can be accessed by either the short form method(Delta, arguments) or the long form Delta:-method(Delta, arguments).

LHPDO Object Methods

 • The most important method of an LHPDO object is that it can act as a differential operator. See LHPDO Object as Operator for more detail.
 • After a LHPDO object is constructed, the following methods are available to extract its properties:

 • The following Maple builtins functions are extended so that they work for a LHPDO object: type, expand, has, hastype, indets, normal, simplify. See LHPDO Object Overloaded Builtins for more detail.

Examples

 > $\mathrm{with}\left(\mathrm{LieAlgebrasOfVectorFields}\right):$

Construct a LHPDO object from some differential expressions, linear homogeneous with respect to $\left[u\left(x,y\right),v\left(x,y\right)\right]$.

 > $\mathrm{\Delta }≔\mathrm{LHPDO}\left(\left[\mathrm{diff}\left(u\left(x,y\right),x\right)-\mathrm{diff}\left(v\left(x,y\right),y\right),\mathrm{diff}\left(u\left(x,y\right),y\right)+\mathrm{diff}\left(v\left(x,y\right),x\right)\right]\right)$
 ${\mathrm{\Delta }}{≔}\left({u}{,}{v}\right){→}\left[\frac{{\partial }}{{\partial }{x}}{}{u}{-}\left(\frac{{\partial }}{{\partial }{y}}{}{v}\right){,}\frac{{\partial }}{{\partial }{y}}{}{u}{+}\frac{{\partial }}{{\partial }{x}}{}{v}\right]$ (1)

The operator Delta operates on an ordered pair of inputs (u,v) and returns an ordered pair of expressions:

 > $\mathrm{\Delta }\left(\left[2xy,{y}^{2}-{x}^{2}\right]\right)$
 $\left[{0}{,}{0}\right]$ (2)
 > $\mathrm{\Delta }\left(\left[f\left(x,y\right),g\left(x,y\right)\right]\right)$
 $\left[\frac{{\partial }}{{\partial }{x}}\phantom{\rule[-0.0ex]{0.4em}{0.0ex}}{f}{}\left({x}{,}{y}\right){-}\frac{{\partial }}{{\partial }{y}}\phantom{\rule[-0.0ex]{0.4em}{0.0ex}}{g}{}\left({x}{,}{y}\right){,}\frac{{\partial }}{{\partial }{y}}\phantom{\rule[-0.0ex]{0.4em}{0.0ex}}{f}{}\left({x}{,}{y}\right){+}\frac{{\partial }}{{\partial }{x}}\phantom{\rule[-0.0ex]{0.4em}{0.0ex}}{g}{}\left({x}{,}{y}\right)\right]$ (3)
 > $\mathrm{GetIndependents}\left(\mathrm{\Delta }\right)$
 $\left[{x}{,}{y}\right]$ (4)
 > $\mathrm{GetDependentsCount}\left(\mathrm{\Delta }\right)$
 ${2}$ (5)
 > $\mathrm{GetSystemCount}\left(\mathrm{\Delta }\right)$
 ${2}$ (6)
 > $\mathrm{GetDependencies}\left(\mathrm{\Delta }\right)$
 $\left[\left[{x}{,}{y}\right]{,}\left[{x}{,}{y}\right]\right]$ (7)

Build another operator U...

 > $U≔\mathrm{LHPDO}\left(\left[x\left({\mathrm{cos}\left(a\right)}^{2}+{\mathrm{sin}\left(a\right)}^{2}\right)\mathrm{diff}\left(u\left(x,t\right),t,t\right)+x\left(x-1\right)\mathrm{diff}\left(u\left(x,t\right),x,x\right)-{x}^{2}\mathrm{diff}\left(u\left(x,t\right),x,x\right)\right],\mathrm{indep}=\left[x,t\right],\mathrm{dep}=\left[u\right]\right)$
 ${U}{≔}{u}{→}\left[\left({x}{}\left({x}{-}{1}\right){-}{{x}}^{{2}}\right){}\left(\frac{{\partial }}{{\partial }{x}}{}\left(\frac{{\partial }}{{\partial }{x}}{}{u}\right)\right){+}{x}{}\left({{\mathrm{cos}}{}\left({a}\right)}^{{2}}{+}{{\mathrm{sin}}{}\left({a}\right)}^{{2}}\right){}\left(\frac{{\partial }}{{\partial }{t}}{}\left(\frac{{\partial }}{{\partial }{t}}{}{u}\right)\right)\right]$ (8)

Apply various Maple builtins to operator U, these have been extended to understand the LHPDO data type.

 > $\mathrm{type}\left(U,\mathrm{LHPDO}\right)$
 ${\mathrm{true}}$ (9)
 > $\mathrm{expand}\left(U\right)$
 ${u}{→}\left[{{\mathrm{cos}}{}\left({a}\right)}^{{2}}{}\left(\frac{{\partial }}{{\partial }{t}}{}\left(\frac{{\partial }}{{\partial }{t}}{}{u}\right)\right){}{x}{+}{{\mathrm{sin}}{}\left({a}\right)}^{{2}}{}\left(\frac{{\partial }}{{\partial }{t}}{}\left(\frac{{\partial }}{{\partial }{t}}{}{u}\right)\right){}{x}{-}{x}{}\left(\frac{{\partial }}{{\partial }{x}}{}\left(\frac{{\partial }}{{\partial }{x}}{}{u}\right)\right)\right]$ (10)
 > $\mathrm{simplify}\left(U\right)$
 ${u}{→}\left[{x}{}\left({-}\left(\frac{{\partial }}{{\partial }{x}}{}\left(\frac{{\partial }}{{\partial }{x}}{}{u}\right)\right){+}\frac{{\partial }}{{\partial }{t}}{}\left(\frac{{\partial }}{{\partial }{t}}{}{u}\right)\right)\right]$ (11)
 > $\mathrm{indets}\left(U,\mathrm{name}\right)$
 $\left\{{a}{,}{t}{,}{x}\right\}$ (12)
 > $\mathrm{hastype}\left(U,\mathrm{trig}\right)$
 ${\mathrm{true}}$ (13)
 > $\mathrm{has}\left(U,\left[u,v\right]\right)$
 ${\mathrm{false}}$ (14)