Module
Data.Sparse.Matrix
- Package
- purescript-sparse-matrices
- Repository
- Ebmtranceboy/purescript-sparse-matrices
#Matrix Source
newtype Matrix a
Representation of a matrix without storage of the zero coefficients.
> -- Working with Sparse Matrices
> import Data.Sparse.Matrix
> -- 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
> -- Inspect a specific location
> c??[1,0]
2.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
> luSolve g v
0.03278688524590164
0.6666666666666666
-0.1078431372549019
Constructors
Instances
#Poly2 Source
type Poly2 a = Polynomial (Polynomial a)
#determinant Source
determinant :: forall a. Eq a => Semiring a => Ring a => EuclideanRing a => Square a -> a
Determinant of a square matrix
#internalMap Source
internalMap :: forall a. Polynomial a -> Map Int a
Returns the polynomial internal structure
#monoPol Source
monoPol :: forall a. a -> Int -> Polynomial a
Imported from Data.Sparse.Polynomial
#(??) 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