====== Representation of derivatives ======
Next topic: [[documentation:guide:applying_and_manipulating_transformations]]
----
Representation of derivatives in Redberry is very similar to other systems and
is very close to standard mathematical sense of this concept. However, presence
of indices brings new features of derivatives with respect to indexed arguments.
====Indexless expressions====
Consider first the common mathematical notation for derivatives of ordinary
functions. The standard notation $f'(y)$ is really a shorthand for $\left.
\frac{d}{d x} f(x)\right|_{x = y}$ etc. Redberry uses the ''%%~%%''
symbol followed by the derivative order (or orders in case of function with
several arguments) instead of primes. So, for example, the following expression
def t = 'f~(3)[x**2]'.t
represents \(\left. \frac{d^3}{d t^3} f\left(t\right) \right|_{t = x^2} \). When substituting e.g. \(f(t) = \sin t\) in the above expression one will have
println 'f[x] = Sin[x]'.t >> 'f~(3)[x**2]'.t
> -Cos[x**2]
In the case of multivariate functions, one should specify how many times to
differentiate with respect to each slot (argument):
def t = 'f~(2, 3, 0)[a**2, w, q]'.t
represents \( \displaystyle \left. \frac{\partial^5}{\partial x^2 \partial y^3}
f\left(x, y, q\right) \right|_{x = a^2 ,\, y =w}\). The above notation applies to derivatives of pure tensor fields; if one need to take derivative of some particular expression one should use [[documentation:ref:differentiate|Differentiate]] transformation or use ''D[vars][exp]'' syntax:
println 'D[x, y][y*x**2 + x*y**2 + f[x, y]]'.t
> 2*x + 2*y + f~(1,1)[x, y]
====Indexed expressions====
In the case of indexed objects one should append additional indices of differentiation variables. For example, expression
def t = 'F~(2)_{mn ab}^{cd}[f_ab]'.t
represents \( \left. \frac{\delta}{\delta t^{ab}}
\frac{\delta}{\delta t_{cd}} F_{mn}\left(t_{ab}\right) \right|_{t_{ab} = f_{ab}}
\). As we see, the inverted indices of differentiation variables should be appended
to the indices of pure tensor field. Since the relative ordering of derivatives is
irrelevant, the indices of derivative have additional symmetries. From the previous
example:
println t.indices.symmetries.permutationGroup
> Group( +[[2, 4], [3, 5]] )
Indices of differentiation variables are appended sequentially starting from the first argument. So, for example, expression:
def t = 'F~(1, 1)_{mnabcde}[f_abc, f_ab]'.t
represents \( \displaystyle \frac{\delta}{\delta f^{abc}} \frac{\delta}{\delta
f^{de}} F_{mn}\left(f_{abc}, f_{ab}\right) \) but not \( \displaystyle
\frac{\delta}{\delta f^{cde}} \frac{\delta}{\delta f^{ab}} F_{mn}\left(f_{abc},
f_{ab}\right) \).
====See also====
* Related reference material: [[documentation:ref:differentiate]]