Journal: Feb 02, 2009

Bryan Newbold, bnewbold@mit.edu
http://web.mit.edu/bnewbold/thesis/

Playing with crude evolution of basic differential equations:

(define J (- (* x d/dy) (* y d/dx)))

(define ((((evolution order)
	   delta-t vector-field)
	  manifold-function)
	 manifold-point)
  (series:sum
   (((exp (* delta-t vector-field))
     manifold-function)
    manifold-point)
   order))

(pe ((((evolution 6) 'a J) R2-chi)
     ((R2 '->point) (up 1 0))))

(pe ((((evolution 6) 2. J) R2-chi)
     ((R2 '->point) (up 1 0))))

(define mywindow (frame -4 4 -4 4))

(define (plot-evolution win order initial a step)
  (letrec 
      ((dostep 
	(lambda (val)
	  (cond
	   ((< val a) (let ((this-point ((((evolution order) val J) R2-chi)
					 ((R2 '->point) initial))))
			(plot-point win
				    (time this-point)
				    (coordinate this-point))
			(dostep (+ val step))))))))
    (dostep 0.)))

(plot-evolution mywindow 6 (up 1. 0.) 6. .01)


Haha, not really what you'd expect at the end there... numerical error?
And then interactively:
(define (explore-evolution window order length)
  (define (iterate-mything i x y)
    (if (< i length)
	(let ((this-point ((((evolution order) i J) R2-chi)
			   ((R2 '->point) (up x y)))))
	  (plot-point window (time this-point) (coordinate this-point))
	  (iterate-mything (+ .01 i) x y))
	(button-loop x y)))
  (define (button-loop ox oy)
    (pointer-coordinates
     window
     (lambda (x y button)
       (let ((temp button))
         (cond ((eq? temp 0) (write-line (cons x (cons y (quote ()))))
                             (display " started.")
                             (iterate-mything 0 x y))
               ((eq? temp 1) (write-line (cons ox (cons oy (quote ()))))
                             (display " continued.")
                             (iterate-mything 0 ox oy))
               ((eq? temp 2) (write-line (cons x (cons y (quote ()))))
                             (display " hit.")
                             (button-loop ox oy)))))))
  (newline)
  (display "Left button starts a trajectory.")
  (newline)
  (display "Middle button continues a trajectory.")
  (newline)
  (display "Right button interrogates coordinates.")
  (button-loop 0. 0.))

(explore-evolution mywindow 5 .4)

That looks a lot better!

I don't know why I didn't notice it earlier, but the way dx, d/dx, etc are defined is the instantiate-coordinates procedure.

There's definately some funky funk in the original differential geometry memo around page 20 w/r/t R2 vs R3 coordinates.

From page 28: "You can tell if a set of basis vector fields is a coordinate basis by calculating the commutators. If they are non-zero, then the basis is not a coordinate basis." Isn't that just for orthogonal bases? Need to think this through.

(previous entry)