egison-5.1.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
(.)
((ε' N k)_(i_1)..._(i_N) . A..._(j_1)..._(j_k))
(map (\n -> g~(i_n)~(j_n)) [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 |]