packages feed

hTensor-0.1.0: examples/exterior.hs

import Numeric.LinearAlgebra.Exterior
import Numeric.LinearAlgebra.Array.Util(formatFixed,asMatrix)
import Numeric.LinearAlgebra (det,(><))

printAS = print . asMultivector

sh = putStrLn . formatFixed 2

-- 'listTensor' specialized for Tensor Double
infixl 9 #
(#) :: [Int] -> [Double] -> Tensor Double
(#) = listTensor

m = [3,-3]#[ 1,2,5,
             1,2,8,
            -2,0,4]

eps = leviCivita 3

a = vector [1,0,0] /\ vector [0,1,0]
b = vector [2,0,100,0] /\ vector [0,3,0,0] /\ vector [0,0,4,0]

im = eps!"ijb"* m!"pi" * m!"qj" * cov eps!"apq"

main = do
    putStrLn "exterior product"
    print a
    sh a
    printAS a
    printAS b
    putStrLn "\ndeterminant"
    printAS $ cov eps!"pqr" * m!"pi" * m!"qj" * m!"rk"
    print $ det (asMatrix m)
    putStrLn "\ninverse"
    sh $ im
    sh $ im!"ik" * m!"kj"
    putStrLn "\nmeet and join"
    printAS $ (vector [1,0,1] /\ vector [0,1,0]) \/ (vector [1,1,0] /\ vector [0,0,1])
    putStrLn "\nEuclidean inner product of r-vectors"
    printAS $ (vector [1,0,1] /\ vector [0,1,0]) `inner` (vector[1,1,1])
    print $ vector[3,5] `inner` vector[2,1]