Skip to content

Conversation

@dpgao
Copy link

@dpgao dpgao commented Jul 2, 2020

First, thank you for documenting your work online! I've been going through SICM lately, too, and I'm sure these material will be very helpful. I do think, however, that this 'optimisation' to reduce the number of dimensions is a bit quick. A juggling pin spinning around its central axis will behave differently from one which is stationary, just like how a spinning bicycle wheel behaves differently from a stationary one.

First, thank you for documenting your work online! I've been going through SICM lately, too, and I'm sure these material will be very helpful. I do think, however, that this 'optimisation' to reduce the number of dimensions is a bit quick. A juggling pin spinning around it's central axis will behave differently from one which is stationary, just like how a spinning bicycle wheel behaves differently from a stationary one.
@dpgao
Copy link
Author

dpgao commented Jul 2, 2020

The same goes for the answers to questions e and f. I think the top always has three degrees of freedom regardless of its shape.

@dpgao
Copy link
Author

dpgao commented Jul 2, 2020

I took a go at Exercise 1.6 just now. I think your solution does not necessarily fix the endpoint velocities, because the two extra points you added are passed to Lagrange-interpolation-function together with the other intermediate points in the call to make-path, so the resulting path will still have undetermined endpoint velocities. One can still say that the endpoints are 'constrained', but only in a very weak sense.

Below is my code which constructs a piecewise path where the initial and final segments are forced to be straight lines defined by extra parameters t0*, q0*, t1*, and q1*.

(define (((parametric-path-action* win) L t0 q0 t0* q0* t1* q1* t1 q1) qs)
  (let* ((curve (make-path t0* q0* t1* q1* qs))
	 (path (lambda (t) (cond ((< t t0*) (+ q0 (* (- t t0) (/ (- q0* q0) (- t0* t0)))))
				 ((> t t1*) (+ q1 (* (- t t1) (/ (- q1* q1) (- t1* t1)))))
				 (else (curve t))))))
    ;; display path
    (graphics-clear win)
    (plot-function win path t0 t1 (/ (- t1 t0) 32))
    ;; compute action
    (Lagrangian-action L path t0 t1)))

(define (find-path L t0 q0 t0* q0* t1* q1* t1 q1 n)
  (let ((initial-qs (linear-interpolants q0* q1* n))
	(win (frame 0 :pi -1.2 1.2)))
    (let ((minimizing-qs
	   (multidimensional-minimize
	    ((parametric-path-action* win) L t0 q0 t0* q0* t1* q1* t1 q1)
	    initial-qs)))
      (make-path t0* q0* t1* q1* minimizing-qs))))

If I run the new make-path on a free particle

(find-path (L-free-particle 3.) 0. 1. 0.5 1.1 (- :pi 0.5) -1.1 :pi -1. 4)

I get

which shows that the optimiser does not care about jump discontinuities in the velocity.

I also ran this on the L-harmonic Lagrangian and obtained these curves:

@sritchie
Copy link
Collaborator

@dpgao , somehow I was not subscribed to notifications on my own repository, and missed this! Apologies, I feel terrible for letting this languish for month.

Your answer to 1.6 is way better than mine; you can probably see that I was flailing to justify what I was seeing, instead of understanding this problem.

This is awesome. Do you mind if I incorporate this change into the .org file, with credit to you, of course?

@dpgao
Copy link
Author

dpgao commented Nov 26, 2020

This is awesome. Do you mind if I incorporate this change into the .org file, with credit to you, of course?

Not at all. You’re welcome!

@sritchie
Copy link
Collaborator

I'll pull this in soon as I tidy up this repository!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants