jonathanfishbein1/linear-algebra/7.1.0

NOTE: the latest version is 30.0.0

Vector

A module for Vectors

Types

type Vector a
= Vector (List a)

Vector type

type Vector3 a
= Vector3 a a a

3 Dimensional Vector type

type Scalar a
= Scalar a

Type to represent a scalar value

type alias AbelianGroup a =
{ field : Field a
, addVects : Vector a -> Vector a -> Vector a
, subtractVects : Vector a -> Vector a -> Vector a
}

Type to represent a Abelian Group

type alias VectorSpace a =
{ abelianGroup : AbelianGroup a
, vectorScalarMultiplication : a -> Vector a -> Vector a
}

Type to represent a Vector Space

type alias InnerProductSpace a =
{ vectorSpace : VectorSpace a
, innerProduct : Vector a -> Vector a -> a
}

Type to represent an Inner Product Space

Values

realVectorSpace : VectorSpace Float

Real Numbered Vector Space

realVectorAbelianGroup : AbelianGroup Float

Real Numbered Abelian Group

realInnerProductSpace : InnerProductSpace Float

Real Numbered Inner Product Space

complexVectorSpace : VectorSpace (ComplexNumberCartesian Float)

Complex Numbered Vector Space

complexVectorAbelianGroup : AbelianGroup (ComplexNumberCartesian Float)

Complex Numbered Abelian Group

complexInnerProductSpace : InnerProductSpace (ComplexNumberCartesian Float)

Complex Numbered Inner Product Space

Unitary Operations

scalarMultiplication : Field a -> a -> Vector a -> Vector a

Scalar multiplication over a Vector

vectorLength : Field a -> Vector a -> a

Calculate the length of a Vector

normalise : Field a -> Vector a -> Vector a

Adjust a vector so that its length is exactly one

Binary Operations

addVectors : Field a -> Vector a -> Vector a -> Vector a

Add two Vectors

subtractVectors : Field a -> Vector a -> Vector a -> Vector a

Subtract Vectors

vectorDotProduct : Field a -> Vector a -> Vector a -> a

Calculate the dot product of two Vectors

cross : Field a -> Vector3 a -> Vector3 a -> Vector3 a

Take the cross product of two 3D vectors

distance : AbelianGroup a -> Vector a -> Vector a -> a

Calculate distance between two vectors

vectorTensorProduct : Field a -> Vector a -> Vector a -> Vector a

Calculate the tensor product of two vectors

Vector Properties

dimension : Vector a -> Int

Count of number of elements in a vector

vectorSubspace : AbelianGroup a -> Scalar a -> List (Vector a) -> List (a -> Bool) -> Bool

Determine whether a list of Vectors makes a Subspace

Monoid

Monoid empty for Vector

append : Vector a -> Vector a -> Vector a

Append Vectors together

concat : Monoid (Vector a)

Monoidally append Vectors together

Functor, Applicative, Monad, Foldable

map : (a -> b) -> Vector a -> Vector b

Map over a vector

pure : a -> Vector a

Place a value in minimal Vector context

apply : Vector (a -> b) -> Vector a -> Vector b

Apply for Vector

liftA2 : (a -> b -> c) -> Vector a -> Vector b -> Vector c

Lift a binary function to work with Vectors

bind : Vector a -> (a -> Vector b) -> Vector b

bind for Vector

foldl : (a -> b -> b) -> b -> Vector a -> b

Left fold over a Vector

Equality

equal : (a -> a -> Bool) -> Vector a -> Vector a -> Bool

Compare two vectors for equality using a comparator

Manipulation

findIndex : (a -> Bool) -> Vector a -> Maybe Int

Find index of a value in a Vector

getAt : Int -> Vector a -> Maybe a

Get the value in a Vector at the specified index

setAt : Int -> a -> Vector a -> Vector a

Set the value in a Vector at the specified index

parseVector : Parser a -> Parser (Vector a)

Parse a Vector

printRealVector : Vector Float -> String

Print a Real Vector as a string

printComplexVector : Vector (ComplexNumberCartesian Float) -> String

Print a Complex Vector as a string

readRealVector : String -> Result (List DeadEnd) (Vector Float)

Try to read a string into a Real Vector

String
-> Result (List DeadEnd) (Vector (ComplexNumberCartesian Float))

Try to read a string into a Complex Vector

Convert a Vector3 type to a Vector type

Parse a Float that can be negative or positive