packages feed

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 |]