Physics[diff]  differentiate with respect to commutative and anticommutative variables

Calling Sequence


diff(expression, x, , ... )


Parameters


expression



any mathematical expression or relation between expressions

x, , ...



the derivation variables, commutative or anticommutative





Description


•

The diff command is a differentiation command prepared to work with commutative (C) and anticommutative (AC) differentiation variables; that is, it takes into account the possible anticommutative character of the differentiation variables . Differentiation with respect to noncommutative (NC) variables is not implemented. Note that higher order derivatives with respect to AC variables do not commute, so their evaluation by the standard diff command would lead to an incorrect result. For the conventions adopted to represent NC and AC objects, see the Physics package conventions.

•

The %diff command is the inert form of diff; that is, it represents the same mathematical operation while displaying the operation unevaluated. To evaluate the operation, use the value command.

•

All of the differentiating knowledge of the top level diff command is taken into account when evaluating derivatives with diff, and all differentiation rules defined by the user as `diff/...` routines are also automatically taken into account.

•

The syntax for the input of diff is equal to that of the top level command, and a `print/diff` procedure is implemented in order to have the same display. Higher order derivatives with respect to commutative and anticommutative variables are displayed in separate groups. For example, set to be the prefix identifying anticommutative variables:

>

Physics[Setup](anticommutativeprefix = theta);

 (1) 
>

Physics[diff](f(theta1, theta2, x, y), theta1, theta2, x$3, y$2);

 (2) 
•

As with the top level diff command, if the result of a requested derivative cannot be expressed in terms of diff, then the D operator is used to express it. The equivalence between derivatives written in terms of diff and D is as follows:

>

Physics[diff](f(theta1, theta2), theta1, theta2);

 (3) 
 (4) 
•

To convert between formats, use the convert command with diff, Diff, or D as the second argument. Although an equivalence between diff and D always exists, note that there is no equivalence between the Physics and top level versions of diff when there are anticommutative objects in the derivand.



Examples


>


>


 (5) 
First set the symbols and as prefixes identifying anticommutative variables (see Setup for details).
>


 (6) 
So the following is an anticommutative function of two anticommutative variables.
>


The second derivative with respect to the same anticommutative variable is equal to zero.
>


 (7) 
All second order mixed derivatives anticommute.
>


 (8) 
>


 (9) 
Convert to the D format.
>


 (10) 
Derivatives of composite anticommutative functions with respect to anticommutative variables:
>


 (11) 
>


 (12) 
Derivatives of anticommutative products with respect to an anticommutative variable:
>


 (13) 
>


 (14) 
The second derivative with respect to the same anticommutative variable is equal to zero.
>


 (15) 
The mixed second order derivatives anticommute. These operations sometimes require normalizing and expanding the noncommutative products; for that purpose, use the expand command (if the intention is to expand only noncommutative products, use Physics/Expand).
>


 (16) 
>


 (17) 
You can use C and AC variables together. If the output contains derivatives with respect to both C and AC variables, then they are displayed in separate groups.
>


 (18) 
When the derivand contains both commutative and anticommutative variables and functions, using the top level diff command may result in incorrect calculations, even when the differentiation variable is commutative.
For example, differentiate the following anticommutative expression with respect to the commutative variable .
>


 (19) 
>


 (20) 
>


The result above, where the order in which multiplication is performed in the noncommutative product * is relevant, cannot be obtained by using the top level diff command.


References



ChebTerrab, E.S. "Symbolic Computing with Anticommutative and Noncommutative Variables." MapleTech, Vol. 5, No. 1. (1998): 1622.


