Imported Upstream version ceres 1.13.0
[platform/upstream/ceres-solver.git] / docs / source / spivak_notation.rst
1 .. default-domain:: cpp
2
3 .. cpp:namespace:: ceres
4
5 .. _chapter-spivak_notation:
6
7 ===============
8 Spivak Notation
9 ===============
10
11 To preserve our collective sanities, we will use Spivak's notation for
12 derivatives. It is a functional notation that makes reading and
13 reasoning about expressions involving derivatives simple.
14
15 For a univariate function :math:`f`, :math:`f(a)` denotes its value at
16 :math:`a`. :math:`Df` denotes its first derivative, and
17 :math:`Df(a)` is the derivative evaluated at :math:`a`, i.e
18
19 .. math::
20    Df(a) = \left . \frac{d}{dx} f(x) \right |_{x = a}
21
22 :math:`D^kf` denotes the :math:`k^{\text{th}}` derivative of :math:`f`.
23
24 For a bi-variate function :math:`g(x,y)`. :math:`D_1g` and
25 :math:`D_2g` denote the partial derivatives of :math:`g` w.r.t the
26 first and second variable respectively. In the classical notation this
27 is equivalent to saying:
28
29 .. math::
30
31    D_1 g = \frac{\partial}{\partial x}g(x,y) \text{ and }  D_2 g  = \frac{\partial}{\partial y}g(x,y).
32
33
34 :math:`Dg` denotes the Jacobian of `g`, i.e.,
35
36 .. math::
37
38   Dg = \begin{bmatrix} D_1g & D_2g \end{bmatrix}
39
40 More generally for a multivariate function :math:`g:\mathbb{R}^n
41 \longrightarrow \mathbb{R}^m`, :math:`Dg` denotes the :math:`m\times
42 n` Jacobian matrix. :math:`D_i g` is the partial derivative of
43 :math:`g` w.r.t the :math:`i^{\text{th}}` coordinate and the
44 :math:`i^{\text{th}}` column of :math:`Dg`.
45
46 Finally, :math:`D^2_1g` and :math:`D_1D_2g` have the obvious meaning
47 as higher order partial derivatives.
48
49 For more see Michael Spivak's book `Calculus on Manifolds
50 <https://www.amazon.com/Calculus-Manifolds-Approach-Classical-Theorems/dp/0805390219>`_
51 or a brief discussion of the `merits of this notation
52 <http://www.vendian.org/mncharity/dir3/dxdoc/>`_ by
53 Mitchell N. Charity.