From fd539b137d6201273596c02dd2622b343150a9d9 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 20 Dec 2015 16:59:21 -0800 Subject: [PATCH] Added refs, included macros.lyx, and added quite a bit about dexp. --- doc/LieGroups.lyx | 331 +------------------------------------- doc/macros.lyx | 137 ++++++++++++++-- doc/math.lyx | 396 +++++++++++++++++++++++++++++++++++++++------- doc/refs.bib | 26 +++ 4 files changed, 495 insertions(+), 395 deletions(-) create mode 100644 doc/refs.bib diff --git a/doc/LieGroups.lyx b/doc/LieGroups.lyx index adf62314c..0d194b31d 100644 --- a/doc/LieGroups.lyx +++ b/doc/LieGroups.lyx @@ -76,335 +76,10 @@ Frank Dellaert \end_layout \begin_layout Standard -\begin_inset Note Comment -status open +\begin_inset CommandInset include +LatexCommand include +filename "macros.lyx" -\begin_layout Plain Layout -Derivatives -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\deriv}[2]{\frac{\partial#1}{\partial#2}} -{\frac{\partial#1}{\partial#2}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\at}[2]{#1\biggr\rvert_{#2}} -{#1\biggr\rvert_{#2}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\Jac}[3]{ \at{\deriv{#1}{#2}} {#3} } -{\at{\deriv{#1}{#2}}{#3}} -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Note Comment -status open - -\begin_layout Plain Layout -Lie Groups -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\xhat}{\hat{x}} -{\hat{x}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\yhat}{\hat{y}} -{\hat{y}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\Ad}[1]{Ad_{#1}} -{Ad_{#1}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\AAdd}[1]{\mathbf{\mathop{Ad}}{}_{#1}} -{\mathbf{\mathop{Ad}}{}_{#1}} -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\define}{\stackrel{\Delta}{=}} -{\stackrel{\Delta}{=}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\gg}{\mathfrak{g}} -{\mathfrak{g}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\Rn}{\mathbb{R}^{n}} -{\mathbb{R}^{n}} -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Note Comment -status open - -\begin_layout Plain Layout -SO(2), 1 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\Rtwo}{\mathfrak{\mathbb{R}^{2}}} -{\mathfrak{\mathbb{R}^{2}}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\SOtwo}{SO(2)} -{SO(2)} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\sotwo}{\mathfrak{so(2)}} -{\mathfrak{so(2)}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\that}{\hat{\theta}} -{\hat{\theta}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\skew}[1]{[#1]_{+}} -{[#1]_{+}} -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Note Comment -status open - -\begin_layout Plain Layout -SE(2), 3 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\SEtwo}{SE(2)} -{SE(2)} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\setwo}{\mathfrak{se(2)}} -{\mathfrak{se(2)}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\Skew}[1]{[#1]_{\times}} -{[#1]_{\times}} -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Note Comment -status open - -\begin_layout Plain Layout -SO(3), 3 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\Rthree}{\mathfrak{\mathbb{R}^{3}}} -{\mathfrak{\mathbb{R}^{3}}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\SOthree}{SO(3)} -{SO(3)} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\sothree}{\mathfrak{so(3)}} -{\mathfrak{so(3)}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\what}{\hat{\omega}} -{\hat{\omega}} -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Note Comment -status open - -\begin_layout Plain Layout -SE(3),6 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\Rsix}{\mathfrak{\mathbb{R}^{6}}} -{\mathfrak{\mathbb{R}^{6}}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\SEthree}{SE(3)} -{SE(3)} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\sethree}{\mathfrak{se(3)}} -{\mathfrak{se(3)}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\xihat}{\hat{\xi}} -{\hat{\xi}} -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Note Comment -status open - -\begin_layout Plain Layout -Aff(2),6 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\Afftwo}{Aff(2)} -{Aff(2)} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\afftwo}{\mathfrak{aff(2)}} -{\mathfrak{aff(2)}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\aa}{a} -{a} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\ahat}{\hat{a}} -{\hat{a}} -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Note Comment -status collapsed - -\begin_layout Plain Layout -SL(3),8 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset FormulaMacro -\newcommand{\SLthree}{SL(3)} -{SL(3)} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\slthree}{\mathfrak{sl(3)}} -{\mathfrak{sl(3)}} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\hh}{h} -{h} -\end_inset - - -\begin_inset FormulaMacro -\newcommand{\hhat}{\hat{h}} -{\hat{h}} \end_inset diff --git a/doc/macros.lyx b/doc/macros.lyx index 1e57e1675..0d8429c4a 100644 --- a/doc/macros.lyx +++ b/doc/macros.lyx @@ -1,42 +1,60 @@ -#LyX 1.6.5 created this file. For more info see http://www.lyx.org/ -\lyxformat 345 +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 \begin_document \begin_header \textclass article \use_default_options true +\maintain_unincluded_children false \language english +\language_package default \inputencoding auto +\fontencoding global \font_roman default \font_sans default \font_typewriter default \font_default_family default +\use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 100 \graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default \paperfontsize default \use_hyperref false \papersize default \use_geometry false \use_amsmath 1 \use_esint 1 +\use_mhchem 1 +\use_mathdots 0 \cite_engine basic \use_bibtopic false +\use_indices false \paperorientation portrait +\suppress_date false +\use_refstyle 0 +\index Index +\shortcut idx +\color #008000 +\end_index \secnumdepth 3 \tocdepth 3 \paragraph_separation indent -\defskip medskip +\paragraph_indentation default \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false -\author "" -\author "" +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false \end_header \begin_body @@ -62,14 +80,14 @@ Derivatives \begin_inset FormulaMacro -\newcommand{\at}[2]{#1\biggr\rvert_{#2}} -{#1\biggr\rvert_{#2}} +\newcommand{\at}[1]{#1\biggr\vert_{\#2}} +{#1\biggr\vert_{\#2}} \end_inset \begin_inset FormulaMacro \newcommand{\Jac}[3]{ \at{\deriv{#1}{#2}} {#3} } -{\at{\deriv{#1}{#2}}{#3}} +{\at{\deriv{#1}{#2}}#3} \end_inset @@ -107,6 +125,15 @@ Lie Groups \end_inset +\end_layout + +\begin_layout Standard +\begin_inset FormulaMacro +\newcommand{\AAdd}[1]{\mathbf{\mathop{Ad}}{}_{#1}} +{\mathbf{\mathop{Ad}}{}_{#1}} +\end_inset + + \end_layout \begin_layout Standard @@ -144,6 +171,12 @@ SO(2) \end_layout \begin_layout Standard +\begin_inset FormulaMacro +\newcommand{\Rone}{\mathfrak{\mathbb{R}}} +{\mathfrak{\mathbb{R}}} +\end_inset + + \begin_inset FormulaMacro \newcommand{\Rtwo}{\mathfrak{\mathbb{R}^{2}}} {\mathfrak{\mathbb{R}^{2}}} @@ -202,6 +235,12 @@ SE(2) \end_inset +\begin_inset FormulaMacro +\newcommand{\Skew}[1]{[#1]_{\times}} +{[#1]_{\times}} +\end_inset + + \end_layout \begin_layout Standard @@ -243,7 +282,7 @@ SO(3) \begin_inset FormulaMacro -\newcommand{\Skew}[1]{[#1]_{\times}} +\renewcommand{\Skew}[1]{[#1]_{\times}} {[#1]_{\times}} \end_inset @@ -288,6 +327,86 @@ SE(3) \end_inset +\end_layout + +\begin_layout Standard +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +Aff(2),6 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset FormulaMacro +\newcommand{\Afftwo}{Aff(2)} +{Aff(2)} +\end_inset + + +\begin_inset FormulaMacro +\newcommand{\afftwo}{\mathfrak{aff(2)}} +{\mathfrak{aff(2)}} +\end_inset + + +\begin_inset FormulaMacro +\newcommand{\aa}{a} +{a} +\end_inset + + +\begin_inset FormulaMacro +\newcommand{\ahat}{\hat{a}} +{\hat{a}} +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Note Comment +status collapsed + +\begin_layout Plain Layout +SL(3),8 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset FormulaMacro +\newcommand{\SLthree}{SL(3)} +{SL(3)} +\end_inset + + +\begin_inset FormulaMacro +\newcommand{\slthree}{\mathfrak{sl(3)}} +{\mathfrak{sl(3)}} +\end_inset + + +\begin_inset FormulaMacro +\newcommand{\hh}{h} +{h} +\end_inset + + +\begin_inset FormulaMacro +\newcommand{\hhat}{\hat{h}} +{\hat{h}} +\end_inset + + \end_layout \end_body diff --git a/doc/math.lyx b/doc/math.lyx index d96f1f4c8..5571532f6 100644 --- a/doc/math.lyx +++ b/doc/math.lyx @@ -1237,21 +1237,28 @@ reference "eq:ApproximateObjective" \end_inset . - In particular, the notion of an exponential map allows us to define an - incremental transformation as tracing out a geodesic curve on the group - manifold along a certain + In particular, the notion of an exponential map allows us to define a mapping + from \series bold -tangent vector +local coordinates \series default \begin_inset Formula $\xi$ +\end_inset + + back to a neighborhood in +\begin_inset Formula $G$ +\end_inset + + around +\begin_inset Formula $a$ \end_inset , \begin_inset Formula -\[ -a\oplus\xi\define a\exp\left(\hat{\xi}\right) -\] +\begin{equation} +a\oplus\xi\define a\exp\left(\hat{\xi}\right)\label{eq:expmap} +\end{equation} \end_inset @@ -1263,11 +1270,12 @@ with \begin_inset Formula $n$ \end_inset --dimensional Lie group, +-dimensional Lie group. + Above, \begin_inset Formula $\hat{\xi}\in\mathfrak{g}$ \end_inset - the Lie algebra element corresponding to the vector + is the Lie algebra element corresponding to the vector \begin_inset Formula $\xi$ \end_inset @@ -1305,7 +1313,7 @@ For the Lie group \end_inset is denoted as -\begin_inset Formula $\omega$ +\begin_inset Formula $\omega t$ \end_inset and represents an angular displacement. @@ -1314,17 +1322,17 @@ For the Lie group \end_inset is a skew symmetric matrix denoted as -\begin_inset Formula $\Skew{\omega}\in\sothree$ +\begin_inset Formula $\Skew{\omega t}\in\sothree$ \end_inset , and is given by \begin_inset Formula \[ -\Skew{\omega}=\left[\begin{array}{ccc} +\Skew{\omega t}=\left[\begin{array}{ccc} 0 & -\omega_{z} & \omega_{y}\\ \omega_{z} & 0 & -\omega_{x}\\ -\omega_{y} & \omega_{x} & 0 -\end{array}\right] +\end{array}\right]t \] \end_inset @@ -1334,12 +1342,136 @@ Finally, the increment \end_inset corresponds to an incremental rotation -\begin_inset Formula $R\oplus\omega=Re^{\Skew{\omega}}$ +\begin_inset Formula $R\oplus\omega t=Re^{\Skew{\omega t}}$ \end_inset . \end_layout +\begin_layout Subsection +Local Coordinates vs. + Tangent Vectors +\end_layout + +\begin_layout Standard +In differential geometry, +\series bold +tangent vectors +\series default + +\begin_inset Formula $v\in T_{a}G$ +\end_inset + + at +\begin_inset Formula $a$ +\end_inset + + are elements of the Lie algebra +\begin_inset Formula $\mathfrak{g}$ +\end_inset + +, and are defined as +\begin_inset Formula +\[ +v\define\Jac{\gamma(t)}t{t=0} +\] + +\end_inset + +where +\begin_inset Formula $\gamma$ +\end_inset + + is some curve that passes through +\begin_inset Formula $a$ +\end_inset + + at +\begin_inset Formula $t=0$ +\end_inset + +, i.e. + +\begin_inset Formula $\gamma(0)=a$ +\end_inset + +. + In particular, for any fixed local coordinate +\begin_inset Formula $\xi$ +\end_inset + + the map +\begin_inset CommandInset ref +LatexCommand eqref +reference "eq:expmap" + +\end_inset + + can be used to define a +\series bold +geodesic curve +\series default + on the group manifold defined by +\begin_inset Formula $\gamma:t\mapsto ae^{\widehat{t\xi}}$ +\end_inset + +, and the corresponding tangent vector is given by +\begin_inset Formula +\begin{equation} +\Jac{ae^{\widehat{t\xi}}}t{t=0}=a\xihat\label{eq:tangent-vector} +\end{equation} + +\end_inset + +This defines the mapping between local coordinates +\begin_inset Formula $\xi\in\Rn$ +\end_inset + + and actual tangent vectors +\begin_inset Formula $a\xihat\in g$ +\end_inset + +: the vector +\begin_inset Formula $\xi$ +\end_inset + + defines a direction of travel on the manifold, but does so in the local + coordinate frame +\begin_inset Formula $a$ +\end_inset + +. +\end_layout + +\begin_layout Example +Assume a rigid body's attitude is described by +\begin_inset Formula $R_{b}^{n}(t)$ +\end_inset + +, where the indices denote the navigation frame +\begin_inset Formula $N$ +\end_inset + + and body frame +\begin_inset Formula $B$ +\end_inset + +, respectively. + An extrinsically calibrated gyroscope measures the angular velocity +\begin_inset Formula $\omega^{b}$ +\end_inset + +, in the body frame, and the corresponding tangent vector is +\begin_inset Formula +\[ +\dot{R}_{b}^{n}(t)=R_{b}^{n}(t)\widehat{\omega^{b}} +\] + +\end_inset + + +\end_layout + \begin_layout Subsection Derivatives \end_layout @@ -1352,7 +1484,7 @@ reference "def:differentiable" \end_inset - to map exponential coordinates + to map local coordinates \begin_inset Formula $\xi$ \end_inset @@ -1368,7 +1500,7 @@ reference "def:differentiable" \begin_inset Formula $Df_{a}$ \end_inset - locally approximates a function + approximates the function \begin_inset Formula $f$ \end_inset @@ -1378,6 +1510,10 @@ reference "def:differentiable" to \begin_inset Formula $\Reals m$ +\end_inset + + in a neighborhood around +\begin_inset Formula $a$ \end_inset : @@ -1455,41 +1591,6 @@ derivative . \end_layout -\begin_layout Standard -Note that the vectors -\begin_inset Formula $\xi$ -\end_inset - - can be viewed as lying in the tangent space to -\begin_inset Formula $G$ -\end_inset - - at -\begin_inset Formula $a$ -\end_inset - -, but defining this rigorously would take us on a longer tour of differential - geometry. - Informally, -\begin_inset Formula $\xi$ -\end_inset - - is simply the direction, in a local coordinate frame, that is locally tangent - at -\begin_inset Formula $a$ -\end_inset - - to a geodesic curve -\begin_inset Formula $\gamma:t\mapsto ae^{\widehat{t\xi}}$ -\end_inset - - traced out by the exponential map, with -\begin_inset Formula $\gamma(0)=a$ -\end_inset - -. -\end_layout - \begin_layout Subsection Derivative of an Action \begin_inset CommandInset label @@ -3000,7 +3101,7 @@ f(ge^{\xhat})=f(ge^{\xhat}g^{-1}g)=f(e^{\Ad g\xhat}g) \end_layout \begin_layout Subsection -Derivative of the Exponential and Logarithm Map +Derivative of the Exponential Map \end_layout \begin_layout Theorem @@ -3064,17 +3165,196 @@ For \begin_inset Formula $\xi\neq0$ \end_inset -, things are not simple, see . +, things are not simple. + As with pushforwards above, we will be looking for an +\begin_inset Formula $n\times n$ +\end_inset + -\begin_inset Flex URL +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\uuline off +\uwave off +\noun off +\color none +Jacobian +\begin_inset Formula $f'(\xi)$ +\end_inset + + such that +\family default +\series default +\shape default +\size default +\emph default +\bar default +\strikeout default +\uuline default +\uwave default +\noun default +\color inherit + +\begin_inset Formula +\begin{equation} +f\left(\xi+\delta\right)\approx f\left(\xi\right)\exp\left(\widehat{f'(\xi)\delta}\right)\label{eq:push_exp} +\end{equation} + +\end_inset + +Differential geometry tells us that for any Lie algebra element +\begin_inset Formula $\xihat\in\mathfrak{g}$ +\end_inset + + there exists a +\emph on +linear +\emph default + map +\begin_inset Formula $d\exp_{\xihat}:T_{\xihat}\mathfrak{g}\rightarrow T_{\exp(\xihat)}G$ +\end_inset + +, which is given by +\begin_inset Foot status collapsed \begin_layout Plain Layout +See +\begin_inset Flex URL +status open -http://deltaepsilons.wordpress.com/2009/11/06/helgasons-formula-for-the-differenti -al-of-the-exponential/ +\begin_layout Plain Layout + +http://deltaepsilons.wordpress.com/2009/11/06/ \end_layout +\end_inset + + or +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +https://en.wikipedia.org/wiki/Derivative_of_the_exponential_map +\end_layout + +\end_inset + +. +\end_layout + +\end_inset + + +\begin_inset Formula +\begin{equation} +d\exp_{\xihat}\hat{x}=\exp(\xihat)\frac{1-\exp(-ad_{\xihat})}{ad_{\xihat}}\hat{x}\label{eq:dexp} +\end{equation} + +\end_inset + +with +\begin_inset Formula $\hat{x}\in T_{\xihat}\mathfrak{g}$ +\end_inset + + and +\begin_inset Formula $ad_{\xihat}$ +\end_inset + + itself a linear map taking +\begin_inset Formula $\hat{x}$ +\end_inset + + to +\begin_inset Formula $[\xihat,\hat{x}]$ +\end_inset + +, the Lie bracket. + The actual formula above is not really as important as the fact that the + linear map exists, although it is expressed directly in terms of tangent + vectors to +\begin_inset Formula $\mathfrak{g}$ +\end_inset + + and +\begin_inset Formula $G$ +\end_inset + +. + Equation +\begin_inset CommandInset ref +LatexCommand eqref +reference "eq:dexp" + +\end_inset + + is a tangent vector, and comparing with +\begin_inset CommandInset ref +LatexCommand eqref +reference "eq:tangent-vector" + +\end_inset + + we see that it maps to local coordinates +\begin_inset Formula $y$ +\end_inset + + as follows: +\begin_inset Formula +\[ +\yhat=\frac{1-\exp(-ad_{\xihat})}{ad_{\xihat}}\hat{x} +\] + +\end_inset + +which can be used to construct the Jacobian +\begin_inset Formula $f'(\xi)$ +\end_inset + +. +\end_layout + +\begin_layout Example +For +\begin_inset Formula $\SOthree$ +\end_inset + +, the operator +\begin_inset Formula $ad_{\xihat}$ +\end_inset + + is simply a matrix multiplication when representing +\begin_inset Formula $\sothree$ +\end_inset + + using 3-vectors, i.e., +\begin_inset Formula $ad_{\xihat}x=\xihat x$ +\end_inset + +, and the +\begin_inset Formula $3\times3$ +\end_inset + + Jacobian corresponding to +\begin_inset Formula $d\exp$ +\end_inset + + is +\begin_inset Formula +\[ +f'(\xi)=\frac{I_{3\times3}-\exp(-\xihat)}{\xihat}=\sum_{k=0}^{\infty}\frac{(-1)^{k}}{(k+1)!}\xihat^{k} +\] + +\end_inset + +which, similar to the exponential map, has a simple closed form expression + for +\begin_inset Formula $\SOthree$ \end_inset . @@ -3097,7 +3377,7 @@ Retractions \begin_layout Standard \begin_inset FormulaMacro -\newcommand{\retract}{\mathcal{R}} +\renewcommand{\retract}{\mathcal{R}} {\mathcal{R}} \end_inset @@ -6797,7 +7077,7 @@ Then \begin_layout Standard \begin_inset CommandInset bibtex LatexCommand bibtex -bibfiles "/Users/dellaert/papers/refs" +bibfiles "refs" options "plain" \end_inset diff --git a/doc/refs.bib b/doc/refs.bib new file mode 100644 index 000000000..414773483 --- /dev/null +++ b/doc/refs.bib @@ -0,0 +1,26 @@ +@article{Iserles00an, + title = {Lie-group methods}, + author = {Iserles, Arieh and Munthe-Kaas, Hans Z and + N{\o}rsett, Syvert P and Zanna, Antonella}, + journal = {Acta Numerica 2000}, + volume = {9}, + pages = {215--365}, + year = {2000}, + publisher = {Cambridge Univ Press} +} + +@book{Murray94book, + title = {A mathematical introduction to robotic manipulation}, + author = {Murray, Richard M and Li, Zexiang and Sastry, S + Shankar and Sastry, S Shankara}, + year = {1994}, + publisher = {CRC press} +} + +@book{Spivak65book, + title = {Calculus on manifolds}, + author = {Spivak, Michael}, + volume = {1}, + year = {1965}, + publisher = {WA Benjamin New York} +} \ No newline at end of file