Here we use the Exercise 1.15: Equivalence
p->r
conversion function to convert the Lagrangian in rectangular coordinates to polar coordinates (and compare to results from notes and exercise 1.14 where it was computed explicitly).;; The Coordinate conversion function `C`
(defn p2r [[_ [r phi] [rdot phidot]]]
(let [x (* r (cos phi))
y (* r (sin phi))]
(up x y)))
;; F->C is part of sicmutils and is more complex than in the book for this section
(defn F2C [F]
(fn [local]
(let [v (ref local 2)
t (ref local 0)]
(up t
(F local)
(+ (((partial 0) F) local)
(* (((partial 1) F) local) v))))))
(defn L-central-rectangular [m U]
(fn L [[_ [x y] [v_x v_y]]]
(let [r (sqrt (+ (square x) (square y)))]
(- (* 1/2 'm (+ (square v_x) (square v_y))) (U r)))))
;; L' = L . C
(defn L-central-polar-using-F2C [m U]
(fn [q-prime]
((compose (L-central-rectangular m U) (F2C p2r))
q-prime)))
;; Verify LE in polar coordinates match what was expected
(let [L (L-central-polar-using-F2C 'm (literal-function 'U))
state (up (literal-function 'r) (literal-function 'varphi))]
(rendertex (((Lagrange-equations L) state) 't)))
\begin{bmatrix}\displaystyle{- m\,r\left(t\right)\,{\left(D\varphi\left(t\right)\right)}^{2} + m\,{D}^{2}r\left(t\right) + DU\left(r\left(t\right)\right)}&\displaystyle{m\,{\left(r\left(t\right)\right)}^{2}\,{D}^{2}\varphi\left(t\right) + 2\,m\,r\left(t\right)\,D\varphi\left(t\right)\,Dr\left(t\right)}\end{bmatrix}