egison-5.0.0: sample/math/geometry/hodge-E3.egi
--
-- Hodge star operator in E³ (Euclidean 3-space)
--
def N := 3
def params := [|x, y, z|]
def g := [|[|1, 0, 0|], [|0, 1, 0|], [|0, 0, 1|]|]
def hodge A :=
let k := dfOrder A
in withSymbols [i, j]
sqrt (abs (M.det g_#_#)) *
foldl
(.)
((subrefs A (map 1#j_$1 (between 1 k))) . (subrefs (ε' N k) (map 1#i_$1 (between 1 N))))
(map (\n -> g~(i_n)~(j_n)) (between 1 k))
def dx := [|1, 0, 0|]
def dy := [|0, 1, 0|]
def dz := [|0, 0, 1|]
assertEqual "Hodge star of dx"
(hodge dx)
[| [| 0, 0, 0 |], [| 0, 0, 1 |], [| 0, 0, 0 |] |]
assertEqual "Hodge star of dx ∧ dy"
(hodge (wedge dx dy))
[| 0, 0, 1 |]