Module
Data.Sparse.Matrix
- Package
- purescript-sparse-matrices
- Repository
- Ebmtranceboy/purescript-sparse-matrices
#Poly2 Source
type Poly2 a = Polynomial (Polynomial a)
Representation of a matrix without storage of the zero coefficients.
> -- Working with Sparse Matrices
> import Data.Sparse.Matrix
> import Data.Sparse.Polynomial ((^))
> -- Define a matrix with sum of terms (see Data.Sparse.Polynomial)
> a = Matrix { height:3, width:2, coefficients: 5.0^2^0+7.0^0^1 }
> a
0.0 7.0
0.0 0.0
5.0 0.0
> -- Modify all the non-zero elements with the functor
> b = (_ + 2.0) <$> a
> b
0.0 9.0
0.0 0.0
7.0 0.0
> -- Set a specific element
> c = 2.0^1^0 ~ b
> c
0.0 9.0
2.0 0.0
7.0 0.0
> -- Coefficient extraction
> c !! [1,0]
2.0
> -- Column(s) extraction
> c * Matrix { height: 3, width: 1, coefficients: 1.0^1^0 }
9.0
0.0
0.0
> -- Row(s) extraction
> Matrix { height: 2, width: 3, coefficients: 1.0^0^0 + 1.0^1^2 } * c
0.0 9.0
7.0 0.0
> -- transpose, multiply
> d = a * transpose c
> d
63.0 0.0 0.0
0.0 0.0 0.0
0.0 10.0 35.0
> -- Weight a specific element
> e = 0.5^0^0 ~* d
> e
31.5 0.0 0.0
0.0 0.0 0.0
0.0 10.0 35.0
> -- Increment a specific element
> f = 4.0^1^1 ~+ e
> f
31.5 0.0 0.0
0.0 4.0 0.0
0.0 10.0 35.0
> -- Identity, subtraction
> g = f - eye 3
> g
30.5 0.0 0.0
0.0 3.0 0.0
0.0 10.0 34.0
> -- Vectors are just column matrices
> v = Matrix { height:3, width:1, coefficients: 1.0^0^0+2.0^1^0+3.0^2^0 }
> v
1.0
2.0
3.0
> -- Solve the linear system
> pluSolve g v
0.03278688524590164
0.6666666666666666
-0.10784313725490192
#Square Source
type Square a = Matrix a
Instances
(Eq a, DivisionRing a, Ord a, Divisible a, Leadable a) => DivisionRing (Square a)
#coefficients Source
coefficients :: forall a. Matrix a -> Poly2 a
#determinant Source
determinant :: forall a. Eq a => Ord a => Ring a => DivisionRing a => Divisible a => Leadable a => Square a -> a
Determinant of a square matrix in a field
#diagonalize Source
diagonalize :: Symmetric -> { val :: Symmetric, vec :: Square Number }
Square real matrix diagonalization such that m = vec * val * recip vec
#faddeev Source
faddeev :: Square Number -> Polynomial Number
Characteristic polynomial of a real square matrix
#internalMap Source
internalMap :: forall a. Polynomial a -> Map Int a
Returns the polynomial internal structure
#plu Source
plu :: forall a. Eq a => Ring a => Ord a => DivisionRing a => Divisible a => Leadable a => Square a -> { l :: Square a, p :: Square a, parity :: Boolean, u :: Square a }
Returns the 3 square matrices P, L and U and a Boolean such that
- LU = PA where A is the given square matrix with not null determinant
- P is a permutation matrix with parity given by the Boolean (true: 1, false: -1)
- L is triangular inferior with unitary diagonal elements
- U is triangular superior
#ringDeterminant Source
ringDeterminant :: forall a. Ring a => Eq a => Ord a => Divisible a => Leadable a => EuclideanRing a => Matrix a -> a
Determinant of a square matrix in a ring
#(!!) Source
Operator alias for Data.Sparse.Matrix.extract (left-associative / precedence 8)
Coefficient extraction infix notation
#(~) Source
Operator alias for Data.Sparse.Matrix.replace (non-associative / precedence 7)
Element replacement infix notation
- Modules
- Data.
Sparse. Matrix