aboutsummaryrefslogtreecommitdiffstats
path: root/chapters/6-Over-a-Map.scm
blob: 748316b22e8b30bf64f0481927614cfda8fb4cf5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

(define ((vector-field->vector-field-over-map mu:N->M) v-on-M)
  (procedure->vector-field
    (lambda (f-on-M)
      (compose (v-on-M f-on-M) mu:N->M))))

(define (((differential mu) v) f)
  (v (compose f mu)))

(define ((form-field->form-field-over-map mu:N->M) w-on-M)
  (define (make-fake-vector-field V-over-mu n)
    (define ((u f) m)
      ((V-over-mu f) n))
    (procedure->vector-field u))
  (procedure->nform-field
    (lambda vectors-over-map
      (lambda (n)
        ((apply w-on-M
                (map (lambda (V-over-mu)
                       (make-fake-vector-field V-over-mu n))
                     vectors-over-map))
         (mu:N->M n))))
    (get-rank w-on-M)))

(define S2 (make-manifold S^2 2 3))
(define S2-spherical
  (coordinate-system-at 'spherical 'north-pole S2))
(define-coordinates (up theta phi) S2-spherical)
(define S2-basis (coordinate-system->basis S2-spherical))

(define-coordinates t R1-rect)

(define mu
  (compose (point S2-spherical)
           (up (literal-function 'theta)
               (literal-function 'phi))
           (chart R1-rect)))

(define S2-basis-over-mu
  (basis->basis-over-map mu S2-basis))

(define h
  (literal-manifold-function 'h-spherical S2-spherical))

(((basis->vector-basis S2-basis-over-mu) h)
 ((point R1-rect) 't0))
; (down (((partial 0) h-spherical) (up (theta t0) (phi t0)))
;       (((partial 1) h-spherical) (up (theta t0) (phi t0))))


(((basis->1form-basis S2-basis-over-mu)
  (basis->vector-basis S2-basis-over-mu))
 ((point R1-rect) 't0))
; (up (down 1 0) (down 0 1))

(((basis->1form-basis S2-basis-over-mu)
  ((differential mu) d/dt))
 ((point R1-rect) 't0))
; (up ((D theta) t0) ((D phi) t0))

(define ((pullback-function mu:N->M) f-on-M)
  (compose f-on-M mu:N->M))

(define ((pushforward-vector mu:N->M mu^-1:M->N) v-on-N)
  (procedure->vector-field
    (lambda (f)
      (compose (v-on-N (compose f mu:N->M)) mu^-1:M->N))))

(define (pullback-vector-field mu:N->M mu^-1:M->N)
  (pushforward-vector mu^-1:M->N mu:N->M))

(define ((pullback-form mu:N->M) omega-on-M)
  (let ((k (get-rank omega-on-M)))
    (if (= k 0)
        ((pullback-function mu:N->M) omega-on-M)
        (procedure->nform-field
          (lambda vectors-on-N
            (apply ((form-field->form-field-over-map mu:N->M)
                    omega-on-M)
                   (map (differential mu:N_>M) vectors-on-N)))
          k))))

(define mu (literal-manifold-map 'MU R2-rect R3-rect))

(define f (literal-manifold-function 'f-rect R3-rect))
(define X (literal-vector-field 'X-rect R2-rect))

(((- ((pullback mu) (d f)) (d ((pullback mu) f))) X)
 ((point R2-rect) (up 'x0 'y0)))
; 0

(define theta (literal-1form-field 'THETA R3-rect))
(define Y (literal-vector-field 'Y-rect R2-rect))

(((- ((pullback mu) (d theta)) (d ((pullback mu) theta))) X Y)
 ((point R2-rect) (up 'x0 'y0)))
; 0


;;; Exersize 6.1: Velocities on a Globe

; a)

; b)