Copyright | (c) Alberto Ruiz 2009 |
---|---|

License | BSD3 |

Maintainer | Alberto Ruiz |

Stability | experimental |

Safe Haskell | None |

Language | Haskell98 |

Exterior Algebra.

- (/\) :: (Coord t, Fractional t) => Tensor t -> Tensor t -> Tensor t
- inner :: (Coord t, Fractional t) => Tensor t -> Tensor t -> Tensor t
- leviCivita :: Int -> Tensor Double
- dual :: Tensor Double -> Tensor Double
- (\/) :: Tensor Double -> Tensor Double -> Tensor Double
- module Numeric.LinearAlgebra.Tensor
- asMultivector :: Tensor Double -> Multivector
- fromMultivector :: Int -> Multivector -> Tensor Double

# Documentation

(/\) :: (Coord t, Fractional t) => Tensor t -> Tensor t -> Tensor t infixl 5 Source #

The exterior (wedge) product of two tensors. Obtains the union of subspaces.

Implemented as the antisymmetrization of the tensor product.

inner :: (Coord t, Fractional t) => Tensor t -> Tensor t -> Tensor t Source #

Euclidean inner product of multivectors.

leviCivita :: Int -> Tensor Double Source #

The full antisymmetric tensor of order n (contravariant version).

dual :: Tensor Double -> Tensor Double Source #

Inner product of a r-vector with the whole space.

dual t = inner (leviCivita n) t

(\/) :: Tensor Double -> Tensor Double -> Tensor Double infixl 4 Source #

The "meet" operator. Obtains the intersection of subspaces.

a \/ b = dual (dual a /\ dual b)

module Numeric.LinearAlgebra.Tensor

asMultivector :: Tensor Double -> Multivector Source #

Extract a compact multivector representation from a full antisymmetric tensor.

asMultivector = Multivector.`fromTensor`

.

(We do not check that the tensor is actually antisymmetric.)

fromMultivector :: Int -> Multivector -> Tensor Double Source #

Create an explicit antisymmetric `Tensor`

from the components of a Multivector of a given grade.