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]