PDEtools - Maple Programming Help

Home : Support : Online Help : Mathematics : Differential Equations : PDEtools : Symmetries : PDEtools/ConservedCurrents

PDEtools

 ConservedCurrents
 computes the conserved currents of a system of ordinary or partial differential equations (PDE)
 ConservedCurrentTest
 tests whether a given list of expressions is a list of conserved currents of the given PDE system

 Calling Sequence ConservedCurrents(PDESYS, DepVars, _J = ..., displayfunctionality = ..., jetnotation = ..., simplifier = ..., split = ...) ConservedCurrentTest(J, PDESYS, DepVars)

Parameters

 PDESYS - a system involving partial and/or ordinary (possibly not) differential equations J - a conserved current returned by ConservedCurrents DepVars - (optional) a specification of the unknown(s) in PDESYS _J = ... - (optional) indicates the functional form for the conserved currents displayfunctionality = ... - (optional) true (default) or false, to display the functionality on the left-hand-side of the ${J}_{k}$ (conserved currents) functions jetnotation = ... - (optional) can be false (default), jetvariables, jetvariableswithbrackets, jetnumbers or jetODE; to respectively return or not using the different jet notations available order - (optional) indicates the maximum differential order of the derivatives entering the dependence of the conserved currents simplifier = ... - (optional) indicates the simplifier to be used instead of the default simplify/size split = ... - (optional) true (default) or false, to split the DE system to be solved in order to compute the ${J}_{k}$ functions typeofconservedcurrent = ... - optional - can be polynomial or functionfield.

Description

 • The command ConservedCurrents computes conserved currents for a given differential equation system PDESYS. Given a system $\mathrm{\Delta }=0$ (PDESYS) consisting of $N$ equations ${\mathrm{pde}}_{n}$, $n=1..N$, involving $M$ independent variables ${x}_{1},{x}_{2},\mathrm{...}=X$, and where the dependent variables are ${u}_{1},{u}_{2},\mathrm{...}=U$, with $\mathrm{dU}$ denoting the set of partial derivatives of $U$, conserved currents are expressions ${J}_{\mathrm{\alpha },m}\left(X,U,\mathrm{dU}\right)$ each of which satisfy: $\mathrm{d/d}{x}_{1}{J}_{\mathrm{\alpha },1}\left(X,U,\mathrm{dU}\right)+\mathrm{d/d}{x}_{2}{J}_{\mathrm{\alpha },2}\left(X,U,\mathrm{dU}\right)+\mathrm{...}=\mathrm{Divergence}\left({J}_{\mathrm{\alpha },m}\right)$ = 0, where $m=1..M$ and $\mathrm{d/d}{x}_{m}$ represents the total derivative with respect to ${x}_{m}$. The conserved currents coincide with the traditional first integrals when there is only one independent variable, so that $\mathrm{\Delta }$ is a system of ODEs.
 • The command ConservedCurrentTest verifies whether a given expression J is a conserved current of the system PDESYS. Note: Herein, $\mathrm{Divergence}\left({J}_{n}\right)=0$ is assumed to mean that the left hand side is taken modulo the given PDE system; i.e. $\mathrm{Divergence}\left({J}_{n}\right)$ may result in a function of $\mathrm{\Delta }$ that becomes zero whenever $\mathrm{\Delta }=0$.
 • The conserved currents ${J}_{\mathrm{\alpha }}\left(X,U,\mathrm{dU}\right)$ are computed by first constructing the PDE system $\mathrm{Divergence}\left({J}_{\mathrm{\alpha }}\left(X,U,\mathrm{dU}\right)\right)=0$ modulo PDESYS that they satisfy (see DeterminingPDE), then solving this system using pdsolve.
 • By default, the conserved currents are searched as functions depending on the derivatives of the unknowns of the system (they are automatically detected or can be specified as DepVars) up to the order d-1, where d is the highest order of derivatives entering PDESYS. This default can be changed by optionally passing the argument order = m, where $m$ is a nonnegative integer.
 • By default, the conserved currents are searched as functions with no pre-specified form, just with the dependency explained in the previous paragraph. This default can be changed with the option typeofconservedcurrent = ... where the right-hand-side can be polynomial or functionfield, respectively indicating a conserved current of polynomial type, or of a functionfield type with the meaning explained in FunctionField.
 • By default, the functionality of ${J}_{\mathrm{\alpha },m}\left(X,U,\mathrm{dU}\right)$, entering the left-hand-sides of each element in the returned lists, is displayed, the output is presented in functional notation instead of jet notation and is simplified with respect to its size. The PDE system solved to compute the ${J}_{\mathrm{\alpha },m}\left(X,U,\mathrm{dU}\right)$ is split, when that is possible, before being tackled. All these defaults can be changed by passing the optional arguments displayfunctionality = ..., jetnotation = ..., simplifier = ..., split = false.
 • It is also possible to directly specify the functionality expected for the ${J}_{\mathrm{\alpha },m}$ using _J = .... See the examples for a demonstration of the use of this parameter.
 • 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.

Examples

Consider the following PDE "system" consisting of a single PDE

 > with(PDEtools):
 > U := diff_table(u(x,t)):
 > declare(U[]);
 ${u}{}\left({x}{,}{t}\right){}{\mathrm{will now be displayed as}}{}{u}$ (1)
 > pde[1] := U[t,t] + U[x,x] + U[x]*U[];
 ${{\mathrm{pde}}}_{{1}}{≔}{u}{}{{u}}_{{x}}{+}{{u}}_{{t}{,}{t}}{+}{{u}}_{{x}{,}{x}}$ (2)

Two conserved currents depending on arbitrary functions are

 > J[alpha] := ConservedCurrents(pde[1]);
 ${{J}}_{{\mathrm{\alpha }}}{≔}\left[{{\mathrm{_J}}}_{{x}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}{{\mathrm{D}}}_{{3}}{}\left({\mathrm{_F3}}\right){}\left({x}{,}{t}{,}{u}\right){}{{u}}_{{t}}{+}{{\mathrm{D}}}_{{2}}{}\left({\mathrm{_F3}}\right){}\left({x}{,}{t}{,}{u}\right){+}{{\mathrm{_F5}}}_{{t}}{+}\frac{{{u}}^{{2}}}{{2}}{+}{{u}}_{{x}}{,}{{\mathrm{_J}}}_{{t}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}{-}{{\mathrm{_F5}}}_{{x}}{-}{{\mathrm{D}}}_{{3}}{}\left({\mathrm{_F3}}\right){}\left({x}{,}{t}{,}{u}\right){}{{u}}_{{x}}{-}{{\mathrm{D}}}_{{1}}{}\left({\mathrm{_F3}}\right){}\left({x}{,}{t}{,}{u}\right){+}{\mathrm{_F6}}{}\left({x}\right){+}{{u}}_{{t}}\right]{,}\left[{{\mathrm{_J}}}_{{x}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}{{\mathrm{D}}}_{{3}}{}\left({\mathrm{_F3}}\right){}\left({x}{,}{t}{,}{u}\right){}{{u}}_{{t}}{+}{{\mathrm{D}}}_{{2}}{}\left({\mathrm{_F3}}\right){}\left({x}{,}{t}{,}{u}\right){+}{{\mathrm{_F5}}}_{{t}}{+}\frac{{t}{}{{u}}^{{2}}}{{2}}{+}{{u}}_{{x}}{}{t}{,}{{\mathrm{_J}}}_{{t}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}{-}{{\mathrm{_F5}}}_{{x}}{-}{{\mathrm{D}}}_{{3}}{}\left({\mathrm{_F3}}\right){}\left({x}{,}{t}{,}{u}\right){}{{u}}_{{x}}{-}{{\mathrm{D}}}_{{1}}{}\left({\mathrm{_F3}}\right){}\left({x}{,}{t}{,}{u}\right){+}{\mathrm{_F6}}{}\left({x}\right){+}{t}{}{{u}}_{{t}}{-}{u}\right]$ (3)

To verify these results use

 > map(ConservedCurrentTest, [J[alpha]], pde[1]);
 $\left[\left\{{0}\right\}{,}\left\{{0}\right\}\right]$ (4)

To compute the same result using different jet notations use the jetnotation option.

 > ConservedCurrents(pde[1], jetnotation = jetnumbers);
 $\left[{{\mathrm{_J}}}_{{1}}{}\left({x}{,}{t}{,}{u}\left[\right]{,}{{u}}_{{1}}{,}{{u}}_{{2}}\right){=}{{\mathrm{_F3}}}_{{u}\left[\right]}{}{{u}}_{{2}}{+}{{\mathrm{_F3}}}_{{t}}{+}{{\mathrm{_F5}}}_{{t}}{+}\frac{{{u}\left[\right]}^{{2}}}{{2}}{+}{{u}}_{{1}}{,}{{\mathrm{_J}}}_{{2}}{}\left({x}{,}{t}{,}{u}\left[\right]{,}{{u}}_{{1}}{,}{{u}}_{{2}}\right){=}{-}{{\mathrm{_F5}}}_{{x}}{-}{{\mathrm{_F3}}}_{{u}\left[\right]}{}{{u}}_{{1}}{-}{{\mathrm{_F3}}}_{{x}}{+}{\mathrm{_F6}}{}\left({x}\right){+}{{u}}_{{2}}\right]{,}\left[{{\mathrm{_J}}}_{{1}}{}\left({x}{,}{t}{,}{u}\left[\right]{,}{{u}}_{{1}}{,}{{u}}_{{2}}\right){=}{{\mathrm{_F3}}}_{{u}\left[\right]}{}{{u}}_{{2}}{+}{{\mathrm{_F3}}}_{{t}}{+}{{\mathrm{_F5}}}_{{t}}{+}\frac{\left({{u}\left[\right]}^{{2}}{+}{2}{}{{u}}_{{1}}\right){}{t}}{{2}}{,}{{\mathrm{_J}}}_{{2}}{}\left({x}{,}{t}{,}{u}\left[\right]{,}{{u}}_{{1}}{,}{{u}}_{{2}}\right){=}{-}{{\mathrm{_F5}}}_{{x}}{-}{{\mathrm{_F3}}}_{{u}\left[\right]}{}{{u}}_{{1}}{-}{{\mathrm{_F3}}}_{{x}}{+}{\mathrm{_F6}}{}\left({x}\right){+}{t}{}{{u}}_{{2}}{-}{u}\left[\right]\right]$ (5)

In various cases it is simpler, or of more use, to compute a conserved current of polynomial type, or with a mathematical function dependency on the field of functions of the input system. For these purposes use the option typeofconservedcurrent = ... where the right-hand-side can be polynomial or functionfield. For example, for ${\mathrm{pde}}_{1}$, a polynomial conserved current, presented without specializing the arbitrary constants (option split = false) is

 > J[polynomial] := ConservedCurrents(pde[1], type = polynomial, split = false);
 ${\mathrm{* Partial match of \text{'}type\text{'} against keyword \text{'}typeofconservedcurrent\text{'}}}$
 ${{J}}_{{\mathrm{polynomial}}}{≔}\left[{{\mathrm{_J}}}_{{x}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}\frac{\left({-}{2}{}{t}{}{\mathrm{_C12}}{-}{2}{}{\mathrm{_C13}}{}{x}{+}{2}{}{u}{}{\mathrm{_C4}}{+}{2}{}{\mathrm{_C16}}\right){}{{u}}_{{t}}}{{2}}{+}\frac{\left({2}{}{\mathrm{_C11}}{}{t}{+}{2}{}{\mathrm{_C9}}\right){}{{u}}_{{x}}}{{2}}{+}\frac{\left({\mathrm{_C11}}{}{t}{+}{\mathrm{_C9}}\right){}{{u}}^{{2}}}{{2}}{-}{u}{}{\mathrm{_C12}}{+}{\mathrm{_C8}}{}{{t}}^{{3}}{+}{\mathrm{_C5}}{}{{t}}^{{2}}{+}\frac{\left({2}{}{\mathrm{_C6}}{}{x}{+}{2}{}{\mathrm{_C2}}\right){}{t}}{{2}}{+}{\mathrm{_C7}}{}{{x}}^{{2}}{+}{\mathrm{_C3}}{}{x}{+}{\mathrm{_C15}}{,}{{\mathrm{_J}}}_{{t}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}\frac{\left({2}{}{t}{}{\mathrm{_C12}}{+}{2}{}{\mathrm{_C13}}{}{x}{-}{2}{}{u}{}{\mathrm{_C4}}{-}{2}{}{\mathrm{_C16}}\right){}{{u}}_{{x}}}{{2}}{+}\frac{\left({2}{}{\mathrm{_C11}}{}{t}{+}{2}{}{\mathrm{_C9}}\right){}{{u}}_{{t}}}{{2}}{+}\frac{\left({-}{2}{}{\mathrm{_C11}}{+}{2}{}{\mathrm{_C13}}\right){}{u}}{{2}}{-}\frac{{\mathrm{_C6}}{}{{t}}^{{2}}}{{2}}{+}\frac{\left({-}{4}{}{\mathrm{_C7}}{}{x}{-}{2}{}{\mathrm{_C3}}\right){}{t}}{{2}}{+}{\mathrm{_C14}}{}{{x}}^{{2}}{+}{\mathrm{_C10}}{}{x}{+}{\mathrm{_C1}}\right]$ (6)
 > ConservedCurrentTest(J[polynomial], pde[1]);
 $\left\{{0}\right\}$ (7)

Conserved currents are related to generalized integrating factors ${\mathrm{\mu }}_{\mathrm{\alpha }}$ via $\mathrm{\Sigma }{\mathrm{\mu }}_{\mathrm{\alpha },n}{\mathrm{pde}}_{n}=\mathrm{Divergence}\left({J}_{\mathrm{\alpha }}\right)$ = 0. These are the ${\mathrm{\mu }}_{\mathrm{\alpha }}$ corresponding to the ${J}_{\mathrm{\alpha }}$ computed above.

 > mu[alpha] := IntegratingFactors(pde[1]);
 ${{\mathrm{\mu }}}_{{\mathrm{\alpha }}}{≔}\left[{{\mathrm{_μ}}}_{{1}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}{1}\right]{,}\left[{{\mathrm{_μ}}}_{{1}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}{t}\right]$ (8)

Note that ${\mathrm{pde}}_{1}$ is already the divergence of a function, so that a constant (the number 1 in the result above) is an integrating factor. To verify for correctness these integrating factors use

 > map(IntegratingFactorTest, [mu[alpha]], pde[1]);
 $\left[\left\{{0}\right\}{,}\left\{{0}\right\}\right]$ (9)

Alternatively, applying Euler's operator to ${\mathrm{pde}}_{1}$ you see that ${\mathrm{pde}}_{1}$ is already a divergence.

 > Euler(pde[1]);
 $\left\{{0}\right\}$ (10)

An example where the integrating factor depends on an arbitrary function:

 > pde[2] := U[x,t] + U[x,x,x] + U[x]*U[] = 0;
 ${{\mathrm{pde}}}_{{2}}{≔}{u}{}{{u}}_{{x}}{+}{{u}}_{{t}{,}{x}}{+}{{u}}_{{x}{,}{x}{,}{x}}{=}{0}$ (11)
 > IntegratingFactors(pde[2]);
 $\left[{{\mathrm{_μ}}}_{{1}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}{,}{{u}}_{{x}{,}{x}}{,}{{u}}_{{t}{,}{x}}{,}{{u}}_{{t}{,}{t}}\right){=}{\mathrm{_F1}}{}\left({t}{,}\frac{{{u}}^{{2}}}{{2}}{+}{{u}}_{{t}}{+}{{u}}_{{x}{,}{x}}\right)\right]$ (12)

This is a related conserved current of order 1

 > ConservedCurrents(pde[2], order = 1);
 $\left[{{\mathrm{_J}}}_{{x}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}{{\mathrm{D}}}_{{3}}{}\left({\mathrm{_F1}}\right){}\left({x}{,}{t}{,}{u}\right){}{{u}}_{{t}}{+}{{\mathrm{D}}}_{{2}}{}\left({\mathrm{_F1}}\right){}\left({x}{,}{t}{,}{u}\right){+}{{\mathrm{_F3}}}_{{t}}{,}{{\mathrm{_J}}}_{{t}}{}\left({x}{,}{t}{,}{u}{,}{{u}}_{{x}}{,}{{u}}_{{t}}\right){=}{-}{{\mathrm{D}}}_{{3}}{}\left({\mathrm{_F1}}\right){}\left({x}{,}{t}{,}{u}\right){}{{u}}_{{x}}{-}{{\mathrm{D}}}_{{1}}{}\left({\mathrm{_F1}}\right){}\left({x}{,}{t}{,}{u}\right){-}{{\mathrm{_F3}}}_{{x}}{+}{\mathrm{_F4}}{}\left({x}\right)\right]$ (13)

This is a conserved current depending only on x and t; to compute it use the optional argument _j = ...(functional form desired)..

 > ConservedCurrents(pde[2], _J = f(x,t));
 $\left[{{\mathrm{_J}}}_{{x}}{}\left({x}{,}{t}\right){=}{\mathrm{_F2}}{}\left({x}{,}{t}\right){,}{{\mathrm{_J}}}_{{t}}{}\left({x}{,}{t}\right){=}{\int }{-}{{\mathrm{_F2}}}_{{x}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{t}{+}{\mathrm{_F1}}{}\left({x}\right)\right]$ (14)
 > ConservedCurrentTest((14), pde[2]);
 $\left\{{0}\right\}$ (15)

References

 [1] Olver, P.J. Applications of Lie Groups to Differential Equations. Graduate Texts in Mathematics. Springer-Verlag, 1993.