differentiate expressions in function or jet notation, with respect to independent or dependent (function) variables of the jet space.
D_Dx(expression, x, ... , DepVars, 'options'='value')
any algebraic expression or algebraic equation
differentiation variables, can include functions of the jet spece (dependent variables) or their derivatives
a function or a list of them indicating the dependent variables of the problem
jetnotation = ...
(optional) can be true (default, the notation found in expression), false (function notation), jetvariables, jetvariableswithbrackets, jetnumbers or jetODE; to respectively return or not using the different jet notations available
The D_Dx command computes total derivatives, as diff does, but for D_Dx the input and/or the output can be in jet notation. Also, D_Dx can compute partial derivatives with respect to dependent variables of the jet space (functions in DepVars) or their derivatives. D_Dx also works with anticommutative variables set using the Physics package.
The first argument, expression, is the object being differentiated, followed by the differentiation variables, and then the last argument, DepVars, is always an indication of the dependent variables of the problem, either as a function (could be that way when there is only one) or as a list of them.
The differentiation variables can include any name but also functions of the jet space, that is, functions in DepVars or their partial derivatives. When the differentiation variable is a name the total derivative is computed, so for instance x, f⁡x and f'⁡x are all considered functions of x. When the differentiation variable is a function, however, a partial derivative is computed in that, for instance, f⁡x and f'⁡x are considered independent objects. This permits computing in a natural way objects like
where the right-hand-side is entered as D_Dx(L(x(t), diff(x(t), t)), diff(x(t), t), t, [x(t)]) and means to differentiate Lxt,⁢x.t with respect to x.⁡t followed by taking the total derivative with respect to t, taking x⁡t as the dependent variable defining the jet space.
The output is by default expressed in the jetnotation found in the input expression, whenever expression is written using jetnotation, or otherwise it is expressed in jetvariables notation when expression is passed in standard function notation. This default can be changed by passing the optional argument jetnotation = ..., where the right hand side can be false (to return in function notation), jetnumbers, jetvariables, jetvariableswithbrackets or jetODE; see the jet notations available.
Consider a PDE problem with three dependent variables
with(PDEtools, D_Dx, ToJet, FromJet);
DepVars := [u(x,t), v(t), w(y)];
PDE := diff(u(x,t)*v(t)*w(y),x) + diff(u(x,t)*v(t)*w(y),t,y);
Using the standard diff command you can compute the total derivative of this expression with respect to x,t or y. It is not possible, however, to differentiate PDE with respect to any of the functions in DepVars or its partial derivatives. For that purpose you can use D_Dx
D_Dx(PDE, w(y), DepVars);
Note that the result is presented in jetvariables jet notation, a compact mathematical notation understood by all the symmetry commands of PDEtools. To have this result expressed in function notation use FromJet or directly call D_Dx with the option jetnotation = false
D_Dx(PDE, w(y), DepVars, jetnotation = false);
In this other example it is computed the partial derivative with respect to ∂∂xu⁡x,t followed by the total derivative with respect to t
D_Dx(PDE, u[x], t, DepVars);
In the input above, instead of u[x] you can write diff(u(x,t), x) (function notation) or u (this is the jetnumbers jetnotation), all of them representing the same mathematical object.
You can also work with PDE directly in more compact jetnotation; compare with (4.3)
JPDE := ToJet(PDE, DepVars);
Compute now the total derivative with respect to t comparing the results of differentiating PDE and its jet version JPDE
D_Dx(PDE, t, DepVars);
D_Dx(JPDE, t, DepVars);
((9) - (10));
Download Help Document
What kind of issue would you like to report? (Optional)