aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2022-09-27 19:27:39 -0700
committerBryan Newbold <bnewbold@robocracy.org>2022-09-27 19:27:39 -0700
commitaf89d1244f13b4c0bcf6b9a318d001bf87a4ce37 (patch)
treef778dce251b81712c4172ccf10c4d94f5a77cef9
parentd33e373b84fdd82507dd40c6a0a937a91ef88b05 (diff)
downloadfunc-diff-geometry-af89d1244f13b4c0bcf6b9a318d001bf87a4ce37.tar.gz
func-diff-geometry-af89d1244f13b4c0bcf6b9a318d001bf87a4ce37.zip
progress for the day (tuesday)
-rw-r--r--chapters/5-Integration.scm166
-rw-r--r--log/2022-09-27.md17
2 files changed, 183 insertions, 0 deletions
diff --git a/chapters/5-Integration.scm b/chapters/5-Integration.scm
new file mode 100644
index 0000000..ab81784
--- /dev/null
+++ b/chapters/5-Integration.scm
@@ -0,0 +1,166 @@
+
+; deps
+(define R2->R (-> (UP Real Real) Real))
+(define R2-rect-chi (chart R2-rect))
+(define R2-rect-chi-inverse (point R2-rect))
+(define R2-rect-point (R2-rect-chi-inverse (up 'x0 'y0)))
+
+(define R3->R (-> (UP Real Real Real) Real))
+(define R3-rect-chi (chart R3-rect))
+(define R3-rect-chi-inverse (point R3-rect))
+(define R3-rect-point (R3-rect-chi-inverse (up 'x0 'y0 'z0)))
+
+(define-coordinates (up x y z) R3-rect)
+
+; two regular old vectors
+(define u (+ (* 'u^0 d/dx) (* 'u^1 d/dy)))
+(define v (+ (* 'v^0 d/dx) (* 'v^1 d/dy)))
+
+(((wedge dx dy) u v) R3-rect-point)
+; (+ (* u^0 v^1)
+; (* -1 u^1 v^0))
+
+(define-coordinates (up r theta z) R3-cyl)
+
+; two more vectors
+(define a (+ (* 'a^0 d/dr) (* 'a^1 d/dtheta)))
+(define b (+ (* 'b^0 d/dr) (* 'b^1 d/dtheta)))
+
+(((wedge dr dtheta) a b) ((point R3-cyl) (up 'r0 'theta0 'z0)))
+; (+ (* a^0 b^1) (* -1 a^1 b^0))
+
+; the same thing, as expected
+
+; fancy verification of determinant
+; note that we are re-defining u,v
+
+(define u (+ (* 'u^0 d/dx) (* 'u^1 d/dy) (* 'u^2 d/dz)))
+(define v (+ (* 'v^0 d/dx) (* 'v^1 d/dy) (* 'v^2 d/dz)))
+(define w (+ (* 'w^0 d/dx) (* 'w^1 d/dy) (* 'w^2 d/dz)))
+
+(((wedge dx dy dz) u v w) R3-rect-point)
+; (+ (* u^0 v^1 w^2)
+; (* -1 u^0 v^2 w^1)
+; (* -1 u^1 v^0 w^2)
+; (* u^1 v^2 w^0)
+; (* u^2 v^0 w^1)
+; (* -1 u^2 v^1 w^0))
+
+(- (((wedge dx dy dz) u v w) R3-rect-point)
+ (determinant
+ (matrix-by-rows (list 'u^0 'u^1 'u^2)
+ (list 'v^0 'v^1 'v^2)
+ (list 'w^0 'w^1 'w^2))))
+; 0
+
+; continuing with bits after exersize 5.1...
+
+(define a (literal-manifold-function 'alpha R3-rect))
+(define b (literal-manifold-function 'beta R3-rect))
+(define c (literal-manifold-function 'gamma R3-rect))
+
+(define theta (+ (* a dx) (* b dy) (* c dz)))
+
+(define X (literal-vector-field 'X-rect R3-rect))
+(define Y (literal-vector-field 'Y-rect R3-rect))
+
+(((- (d theta)
+ (+ (wedge (d a) dx)
+ (wedge (d b) dy)
+ (wedge (d c) dz)))
+ X Y)
+ R3-rect-point)
+; 0
+
+(define omega
+ (+ (* a (wedge dy dz))
+ (* b (wedge dz dx))
+ (* c (wedge dx dy))))
+
+(define Z (literal-vector-field 'Z-rect R3-rect))
+
+(((- (d omega)
+ (+ (wedge (d a) dy dz)
+ (wedge (d b) dz dx)
+ (wedge (d c) dx dy)))
+ X Y Z)
+ R3-rect-point)
+; 0
+
+(define v (literal-vector-field 'v-rect R2-rect))
+(define w (literal-vector-field 'w-rect R2-rect))
+
+(define R2-rect-basis (coordinate-system->basis R2-rect))
+
+(define alpha (literal-function 'alpha R2->R))
+(define beta (literal-function 'beta R2->R))
+
+(let ((dx (ref (basis->1form-basis R2-rect-basis) 0))
+ (dy (ref (basis->1form-basis R2-rect-basis) 1)))
+ (((- (d (+ (* (compose alpha (chart R2-rect)) dx)
+ (* (compose beta (chart R2-rect)) dy)))
+ (* (compose (- ((partial 0) beta)
+ ((partial 1) alpha))
+ (chart R2-rect))
+ (wedge dx dy)))
+ v w)
+ R2-rect-point))
+; 0
+
+(define a (literal-manifold-function 'a-rect R3-rect))
+(define b (literal-manifold-function 'b-rect R3-rect))
+(define c (literal-manifold-function 'c-rect R3-rect))
+
+(define flux-through-boundary-element
+ (+ (* a (wedge dy dz))
+ (* b (wedge dz dx))
+ (* c (wedge dx dy))))
+
+(define production-in-volume-element
+ (* (+ (d/dx a) (d/dy b) (d/dz c))
+ (wedge dx dy dz)))
+
+(define X (literal-vector-field 'X-rect R3-rect))
+(define Y (literal-vector-field 'Y-rect R3-rect))
+(define Z (literal-vector-field 'Z-rect R3-rect))
+
+(((- production-in-volume-element
+ (d flux-through-boundary-element))
+ X Y Z)
+ R3-rect-point)
+; 0
+
+;;; Exercise 5.1: Wedge Product
+
+; let's do R2-polar! small and simple
+
+(define-coordinates (up r theta) R2-polar)
+(define R2-polar-chi (chart R2-polar))
+(define R2-polar-chi-inverse (point R2-polar))
+(define R2-polar-point (R2-polar-chi-inverse (up 'r0 'theta0)))
+
+; a) verify that the wedge product is associative for forms in R2-polar
+
+; A wedge ( B wedge C ) == ( A wedge B) wedge C
+
+(define A (literal-1form-field 'a R2-polar))
+(define B (literal-1form-field 'b R2-polar))
+(define C (literal-1form-field 'c R2-polar))
+
+(define m (+ (* 'm^0 d/dr) (* 'm^1 d/dtheta)))
+(define n (+ (* 'n^0 d/dr) (* 'n^1 d/dtheta)))
+(define p (+ (* 'p^0 d/dr) (* 'p^1 d/dtheta)))
+
+
+(((- (wedge (wedge A B) C)
+ (wedge A (wedge B C))) m n p) R2-polar-point)
+; 0
+
+; b) verify that formula (5.17) is true in R2-polar
+; (dx wedge dy wedge ...) (d/dx, d/dy, ...) = 1
+
+(((wedge dr dtheta) d/dr d/dtheta) R2-polar-point)
+; 1
+
+; exersize 5.2 and 5.3 would be in notebook, but not planning to do these right
+; now
diff --git a/log/2022-09-27.md b/log/2022-09-27.md
new file mode 100644
index 0000000..217168d
--- /dev/null
+++ b/log/2022-09-27.md
@@ -0,0 +1,17 @@
+
+Chapter 5: Integration
+=========================
+
+Introduces higher-order forms.
+
+Wedge products, which generate higher-order forms. Went through this pretty
+fast, I think this section is where a bunch of tensor indexing tricks are
+skipped, or would have been.
+
+In this chapter, much of this content is only defined for euclidean R2 or R3,
+need metrics for the general case.
+
+---
+
+As a side note, having `define-coordinates` also define things like `d/dx` and
+just `dx` feels like kind of a syntactic sugar trick.