jonathanfishbein1 / linear-algebra / Matrix

A module for Matrix

Types


type Matrix a
    = Matrix (List (RowVector a))

Matrix type


type Solution a
    = UniqueSolution (ColumnVector a)
    | InfiniteSolutions ({ nullity : Basics.Int, rank : Basics.Int })

Type to represent result of Gauss-Jordan reduction if system is consistant


type Consistancy a
    = Consistant (Solution a)
    | Inconsistant String (Solution a)

Type to represent result of Gauss-Jordan reduction


type VectorDimension
    = VectorDimension Basics.Int

Type to represent vector space such as R, R2, R3


type alias MatrixSpace a =
{ abelianGroup : AbelianGroup (Matrix a)
, matrixScalarMultiplication : a -> Matrix a -> Matrix a 
}

Type to represent a Vector Space

Values

identity : Field a -> Basics.Int -> Matrix a

Create Identity Matrix with n dimension

zeros : Field a -> Basics.Int -> Basics.Int -> Matrix a

Create Matrix with m x n dimension filled with zeros

Constructors

createMatrixFromColumnVectors : List (ColumnVector a) -> Matrix a

Create a Matrix from a list of Column Vectors

Unitary Operations

scalarMultiplication : Field a -> a -> Matrix a -> Matrix a

Scalar multiplication over a Matrix

transpose : Matrix a -> Matrix a

Transpose a Matrix

conjugate : Matrix (ComplexNumbers.ComplexNumber number) -> Matrix (ComplexNumbers.ComplexNumber number)

Take the complex conjugate of a Complex Numbered Matrix

adjoint : Matrix (ComplexNumbers.ComplexNumber number) -> Matrix (ComplexNumbers.ComplexNumber number)

Perform the adjoint operation on a Complex Numbered Matrix

subMatrix : Basics.Int -> Basics.Int -> Basics.Int -> Basics.Int -> Matrix a -> Matrix a

Calculate the submatrix given a starting and ending row and column index

nullSpace : Typeclasses.Classes.Equality.Equality a -> RowVector.InnerProductSpace a -> Matrix a -> Consistancy a

Calculate the null space of a matrix

leftNullSpace : Typeclasses.Classes.Equality.Equality a -> RowVector.InnerProductSpace a -> Matrix a -> Consistancy a

Calculate the left nullspace of a Matrix

getDiagonal : Matrix a -> Maybe (List a)

Get the diagonal of a Matrix

getDiagonalProduct : Field a -> Matrix a -> Maybe a

Get the Product of the diagonal of a Matrix

rank : RowVector.InnerProductSpace a -> Matrix a -> Basics.Int

Calculate the rank of a Matrix

Binary Operations

add : Field a -> Matrix a -> Matrix a -> Matrix a

Add two Matrices together

subtract : Field a -> Matrix a -> Matrix a -> Matrix a

Subtract two Matrices

multiplyMatrixVector : RowVector.InnerProductSpace a -> Matrix a -> ColumnVector a -> Result String (ColumnVector a)

Multiply a Vector by a Matrix

multiply : RowVector.InnerProductSpace a -> Matrix a -> Matrix a -> Matrix a

Matrix Matrix multiplication

multiplyIfCan : RowVector.InnerProductSpace a -> Matrix a -> Matrix a -> Result String (Matrix a)

Matrix Matrix multiplication

tensorProduct : Field a -> Matrix a -> Matrix a -> Matrix a

Calculate the tensor product of two Matricies

commuter : RowVector.InnerProductSpace a -> Matrix a -> Matrix a -> Result String (Matrix a)

Calculate the commuter of two Hermitian Matricies

Matrix Predicates and Properties

areBasis : RowVector.InnerProductSpace a -> VectorDimension -> List (ColumnVector a) -> Basics.Bool

Determine whether list of vectors are a basis for a space

areLinearlyIndependent : RowVector.InnerProductSpace a -> List (ColumnVector a) -> Basics.Bool

Predicate to determine if a list of Vectors are linearly independent

doesSetSpanSpace : RowVector.VectorSpace a -> VectorDimension -> List (ColumnVector a) -> Result String Basics.Bool

Determine whether list of vectors spans a space

mDimension : Matrix a -> Basics.Int

Number of rows in Matrix

nDimension : Matrix a -> Basics.Int

Number of columns in Matrix

areRowEquivalent : RowVector.VectorSpace a -> Matrix a -> Matrix a -> Basics.Bool

Predicate to determine if two matricies are row equivalent

all : (a -> Basics.Bool) -> Matrix a -> Basics.Bool

Predicate to determine if all values in the matric satisfy the given predicate

isOneToOne : RowVector.InnerProductSpace a -> Matrix a -> Result String (Matrix a)

Determine whether a matirx is one to one

isOnto : RowVector.InnerProductSpace a -> Matrix a -> Result String (Matrix a)

Determine whether a matirx is onto

Semigroup, Monoid, Group, Ring, Field, VectorSpace instances

realAdditionSemigroup : Semigroup (Matrix (Real Basics.Float))

Semigroup instance for Matrix under the addition operation with real values.

complexAdditionSemigroup : Semigroup (Matrix (ComplexNumbers.ComplexNumber Basics.Float))

Semigroup instance for Matrix under the addition operation with complex values.

realAdditionCommutativeSemigroup : CommutativeSemigroup (Matrix (Real Basics.Float))

Commutative Semigroup instance for Matrix under the addition operation with real values.

complexAdditionCommutativeSemigroup : CommutativeSemigroup (Matrix (ComplexNumbers.ComplexNumber Basics.Float))

Commutative Semigroup instance for Matrix under the addition operation with complex values.

realAdditionCommutativeMonoid : CommutativeMonoid (Matrix (Real Basics.Float))

Commutative Monoid instance for Matrix under the addition operation with real values.

complexAdditionCommutativeMonoid : CommutativeMonoid (Matrix (ComplexNumbers.ComplexNumber Basics.Float))

Commutative Monoid instance for Matrix under the addition operation with complex values.

realMatrixAlgebra : MatrixAlgebra (Real Basics.Float)

Real Numbered Matrix Algebra

complexMatrixAlgebra : MatrixAlgebra (ComplexNumbers.ComplexNumber Basics.Float)

Complex Numbered Matrix Algebra

realAdditionGroup : Group (Matrix (Real Basics.Float))

Group instance for Matrix under the addition operation with real values.

complexAdditionGroup : Group (Matrix (ComplexNumbers.ComplexNumber Basics.Float))

Group instance for Matrix under the addition operation with complex values.

realAdditionAbelianGroup : AbelianGroup (Matrix (Real Basics.Float))

Abelian Group instance for Matrix under the addition operation with real values.

complexAdditionAbelianGroup : AbelianGroup (Matrix (ComplexNumbers.ComplexNumber Basics.Float))

Abelian Group instance for Matrix under the addition operation with complex values.

realMatrixSpace : MatrixSpace (Real Basics.Float)

Real Numbered Vector Space for Matrix

complexMatrixSpace : MatrixSpace (ComplexNumbers.ComplexNumber Basics.Float)

Complex Numbered Vector Space for Matrix

Monoid, Functor, Applicative, Monad, Foldable functions

empty : Matrix a

Monoid empty for Matrix

concatHorizontal : Typeclasses.Classes.Monoid.Monoid (Matrix a)

Monoidally append Matricies together horizontally

concatVertical : Typeclasses.Classes.Monoid.Monoid (Matrix a)

Monoidally append Matricies together vertically

appendHorizontal : Matrix a -> Matrix a -> Matrix a

Append Matricies together horizontally

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

Map over a Matrix

pure : a -> Matrix a

Applicative pure for Matrix

andMap : Matrix a -> Matrix (a -> b) -> Matrix b

Apply for Matrix

andThen : (a -> Matrix b) -> Matrix a -> Matrix b

Monad bind for Matrix

map2 : (a -> b -> c) -> Matrix a -> Matrix b -> Matrix c

Lift a binary function to work on Matrix

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

Left fold over a Matrix

Equality

equal : (a -> a -> Basics.Bool) -> Typeclasses.Classes.Equality.Equality (Matrix a)

Equal type for Matrix.

equalImplementation : (a -> a -> Basics.Bool) -> Matrix a -> Matrix a -> Basics.Bool

Compare two Matrices for equality

Matrix Forms

upperTriangle : RowVector.VectorSpace a -> Matrix a -> Matrix a

Put a matrix into Upper Triangular Form

gaussianReduce : RowVector.VectorSpace a -> Matrix a -> Matrix a

Gaussian Elimination

jordanReduce : RowVector.VectorSpace a -> Matrix a -> Matrix a

Internal function for Jordan Elimination

gaussJordan : RowVector.VectorSpace a -> Matrix a -> Matrix a

Function composition of Gaussian Elimination and Jordan Elimination

Solving

solve : Typeclasses.Classes.Equality.Equality a -> RowVector.InnerProductSpace a -> Matrix a -> ColumnVector a -> Consistancy a

Solve a system of linear equations using Gauss-Jordan elimination with explict column vector of constants

Manipulation

getAt : ( Basics.Int, Basics.Int ) -> Matrix a -> Maybe a

Get the value in a matrix at the specified row and column

setAt : ( Basics.Int, Basics.Int ) -> a -> Matrix a -> Matrix a

Set the value in a Matrix at the specified row and column

printRealMatrix : Matrix (Real Basics.Float) -> String

Print a Real matrix to a string

printComplexMatrix : Matrix (ComplexNumbers.ComplexNumber Basics.Float) -> String

Print a Complex matrix to a string

readRealMatrix : String -> Result (List Parser.DeadEnd) (Matrix (Real Basics.Float))

Try to read a string into a Matrix

readComplexMatrix : String -> Result (List Parser.DeadEnd) (Matrix (ComplexNumbers.ComplexNumber Basics.Float))

Try to read a string into a Matrix