En este manual se presentan ejmplos de las funciones de la librería de matrices Data.Matrix 0.3.4.3. En los ejemplos se supone que se han importado las siguientes librerías
ghci> import Data.Matrix as M
ghci> import Data.Vector as V
(Matrix a)
es el tipo de las matrices con elementos de tipo a. Por ejemplo,
ghci> :type (matrix 3 3 (\(i,j) -> 2*i - j))
(matrix 3 3 (\(i,j) -> 2*i - j)) :: Matrix Int
(nrows m)
es el número de filas de la matriz m. Por ejemplo,
ghci> let m = matrix 3 4 (\(i,j) -> 2*i - j)
ghci> nrows m
3
(ncols m)
es el número de columnas de la matriz m. Por ejemplo,
ghci> let m = matrix 3 4 (\(i,j) -> 2*i - j)
ghci> ncols m
4
(prettyMatrix m)
es la cadena correspondiente a la matriz m. Por ejemplo,
ghci> prettyMatrix m
"( 1 0 -1 )\n( 3 2 1 )\n( 5 4 3 )\n"
(fmap f m)
es la matriz obtenida aplicando la función f a todos los elementos de la matriz m. Por ejemplo,
ghci> let m = matrix 2 3 (\(i,j) -> i-j)
ghci> m
( 0 -1 -2 )
( 1 0 -1 )
ghci> fmap (*3) m
( 0 -3 -6 )
( 3 0 -3 )
(matrix m n f)
es la matriz de dimensión mxn tal que su elemento (i,j) es f(i,j). Por ejemplo,
ghci> matrix 3 4 (\(i,j) -> i-j)
( 0 -1 -2 -3 )
( 1 0 -1 -2 )
( 2 1 0 -1 )
(rowVector v)
es la matriz cuya única fila es el vector v. Por ejemplo,
ghci> rowVector (V.fromList [3,2,5])
( 3 2 5 )
(colVector v)
es la matriz cuya única columna es el vector v. Por ejemplo,
ghci> colVector (V.fromList [3,2,5])
( 3 )
( 2 )
( 5 )
(fromList m n xs)
es la matriz de orden mxn formada por los primeros elementos de xs. Por ejemplo,
ghci> M.fromList 2 3 [1..20]
( 1 2 3 )
( 4 5 6 )
(fromLists xss)
es la matriz cuyas filas son los elementos de xss (se supone que todos tienen la misma longitud). Por ejemplo,
ghci> fromLists [[1,2,3],[4,5,6]]
( 1 2 3 )
( 4 5 6 )
(toList p)
es la lista de los elementos de la matriz p
. Por ejemplo,
ghci> let p = fromLists [[1,2,3],[4,5,6]]
ghci> toList p
[1,2,3,4,5,6]
(toLists p)
es la lista de las filas de la matriz p
. Por ejemplo,
ghci> let p = fromLists [[1,2,3],[4,5,6]]
ghci> toLists p
[[1,2,3],[4,5,6]]
(zero m n)
es la matriz cero con m filas y n columnas. Por ejemplo,
ghci> zero 2 3
( 0 0 0 )
( 0 0 0 )
(identity n)
es la matrix identidad de orden n. Por ejemplo,
ghci> identity 3
( 1 0 0 )
( 0 1 0 )
( 0 0 1 )
(permMatrix n i j)
es la matriz de orden n obtenida permutando en la matriz identidad las columnas i y j. Por ejemplo,
ghci> permMatrix 3 1 2
( 0 1 0 )
( 1 0 0 )
( 0 0 1 )
(getElem i j p)
es el elemento (i,j) de la matriz p. Por ejemplo,
(ghci> getElem 2 1 (M.fromList 2 3 [1..6])
4
(p ! (i,j))
es el elemento (i,j) de la matriz p. Por ejemplo,
ghci> (M.fromList 2 3 [1..6]) M.! (2,1)
4
(getRow i p)
es la fila i de la matriz p. Por ejemplo,
ghci> getRow 2 (M.fromList 2 3 [1..6])
fromList [4,5,6]
(getCol j p)
es la columna j de la matriz p. Por ejemplo,
ghci> getCol 2 (M.fromList 2 3 [1..6])
fromList [2,5]
(getDiag p)
esla diagonal de la matriz p. Por ejemplo,
ghci> getDiag (M.fromList 2 3 [1..6])
fromList [1,5]
(setElem x (i,j) p)
es la matriz obtenida sustiyendo en p el elemento (i,j) por x. Por ejemplo,
ghci> setElem 9 (2,1) (identity 3)
( 1 0 0 )
( 9 1 0 )
( 0 0 1 )
(transpose p)
es la traspuesta de la matriz p. Por ejemplo,
ghci> transpose (fromLists [[1,2,3],[4,5,6]])
( 1 4 )
( 2 5 )
( 3 6 )
(extendTo m n p)
es la matriz de orden mxn obtenida añadiendo filas y columnas de ceros al final de la matriz p. Por ejemplo,
ghci> extendTo 3 5 (fromLists [[1,2,3],[4,5,6]])
( 1 2 3 0 0 )
( 4 5 6 0 0 )
( 0 0 0 0 0 )
(mapRow f i m)
es la matriz obtenida aplicando la función f a todos los elementos de la fila i de la matriz m. Por ejemplo,
ghci> let m = matrix 3 3 (\(i,j) -> i-j)
ghci> m
( 0 -1 -2 )
( 1 0 -1 )
( 2 1 0 )
ghci> mapRow (\_ x -> x + 5) 2 m
( 0 -1 -2 )
( 6 5 4 )
( 2 1 0 )
(mapCol f j m)
es la matriz obtenida aplicando la función f a todos los elementos de la columna j de la matriz m. Por ejemplo,
ghci> let m = matrix 3 3 (\(i,j) -> i-j)
ghci> m
( 0 -1 -2 )
( 1 0 -1 )
( 2 1 0 )
ghci> mapCol (\_ x -> x + 5) 2 m
( 0 4 -2 )
( 1 5 -1 )
( 2 6 0 )
(submatrix i1 i2 j1 j2 p)
es la submatriz de p formadas por las filas desde i1 a i2 y las columnas desde j1 a j2. Por ejemplo,
ghci> M.fromList 4 4 [1..16]
( 1 2 3 4 )
( 5 6 7 8 )
( 9 10 11 12 )
( 13 14 15 16 )
ghci> submatrix 1 3 2 4 (M.fromList 4 4 [1..16])
( 2 3 4 )
( 6 7 8 )
( 10 11 12 )
ghci> submatrix 1 2 3 4 (M.fromList 4 4 [1..16])
( 3 4 )
( 7 8 )
(minorMatrix i j p)
es la submatriz de p obtenida eliminando la fila i y la columna j. Por ejemplo,
ghci> M.fromList 4 4 [1..16]
( 1 2 3 4 )
( 5 6 7 8 )
( 9 10 11 12 )
( 13 14 15 16 )
ghci> minorMatrix 2 3 (M.fromList 4 4 [1..16])
( 1 2 4 )
( 9 10 12 )
( 13 14 16 )
(splitBlocks i j p)
es (a,b,c,d) donde
d es la submatriz de p desde la fila i y desde la columna j. Por ejemplo,
ghci> splitBlocks 2 3 (M.fromList 4 5 [1..20])
(( 1 2 3 )
( 6 7 8 )
,( 4 5 )
( 9 10 )
,( 11 12 13 )
( 16 17 18 )
,( 14 15 )
( 19 20 )
)
(p <|> q)
es la matriz obtenida añadiendo q a la derecha de p. Por ejemplo,
ghci> fromLists [[1,3],[5,4]] <|> fromLists [[7,9,6],[0,2,8]]
( 1 3 7 9 6 )
( 5 4 0 2 8 )
(p <-> q)
es la matriz obtenida añadiendo q debajo de p. Por ejemplo,
ghci> fromLists [[1,3],[5,4]] <-> fromLists [[7,9],[0,2],[8,6]]
( 1 3 )
( 5 4 )
( 7 9 )
( 0 2 )
( 8 6 )
(joinBlocks (a,b,c,d))
es la matriz p tal que
d es la submatriz de p desde la fila i y desde la columna j. Por ejemplo,
ghci> let a = fromLists [[1,2,3],[6,7,8]]
ghci> let b = fromLists [[4,5],[9,10]]
ghci> let c = fromLists [[11,12,13],[16,17,18]]
ghci> let d = fromLists [[14,15],[19,20]]
ghci> joinBlocks (a,b,c,d)
( 1 2 3 4 5 )
( 6 7 8 9 10 )
( 11 12 13 14 15 )
( 16 17 18 19 20 )
(p + q)
es la suma de las matrices p y q. Por ejemplo,
ghci> let p = fromLists [[1,3,5],[4,7,9]]
ghci> let q = fromLists [[5,4,2],[3,2,0]]
ghci> p + q
( 6 7 7 )
( 7 9 9 )
(p - q)
es la resta de las matrices p y q. Por ejemplo,
ghci> let p = fromLists [[1,3,5],[4,7,9]]
ghci> let q = fromLists [[5,4,2],[3,2,0]]
ghci> p - q
( -4 -1 3 )
( 1 5 9 )
(p * q)
es el producto de las matrices p y q. Por ejemplo,
ghci> let p = fromLists [[1,3,5],[4,7,9]]
ghci> let q = fromLists [[4,7],[6,9],[8,2]]
ghci> p * q
( 62 44 )
( 130 109 )
(scaleMatrix x p)
es la matriz obtenida multiplicando los elementos de p por x. Por ejemplo,
ghci> scaleMatrix 10 (fromLists [[3,2,5],[6,4,7]])
( 30 20 50 )
( 60 40 70 )
(scaleRow x i p)
es la matriz obtenida multiplicando por x los elementos de la fila i de la matriz p. Por ejemplo,
ghci> scaleRow 10 2 (fromLists [[3,2,5],[6,4,7],[0,9,1]])
( 3 2 5 )
( 60 40 70 )
( 0 9 1 )
(combineRows i1 x i2 p)
es la matriz obtenida sumando a la fila i1 de p los elementos de la i2 multiplicados por x. Por ejemplo,
ghci> combineRows 2 10 1 (fromLists [[3,2,5],[6,4,7],[0,9,1]])
( 3 2 5 )
( 36 24 57 )
( 0 9 1 )
(switchRows i1 i2 p)
es la matriz obtenida intercambiando las filas i1 e i2 de la matriz p. Por ejemplo,
ghci> switchRows 2 1 (fromLists [[3,2,5],[6,4,7],[0,9,1]])
( 6 4 7 )
( 3 2 5 )
( 0 9 1 )
(switchCols j1 j2 p)
es la matriz obtenida intercambiando las columnas j1 y j2 de la matriz p. Por ejemplo,
ghci> switchCols 2 1 (fromLists [[3,2,5],[6,4,7],[0,9,1]])
( 2 3 5 )
( 4 6 7 )
( 9 0 1 )
(luDecomp a)
es la descomposición (o factorización) LU con pivote parcial (del inglés "Lower-Upper") de la matriz A expresada como (U,L,P,d), donde U es una matriz triangular superior, L es una matriz triangular inferior unitaria, P es una matriz de permutación y d es el determinante de P, tales que PA = LU. Además, para todo (i,j), L(i,j) ≤ 1. Por ejemplo,
ghci> luDecomp (fromLists [[1,2,0],[0,2,1],[2,0,2]])
(( 2.0 0.0 2.0 )
( 0.0 2.0 -1.0 )
( 0.0 0.0 2.0 )
,( 1.0 0.0 0.0 )
( 0.5 1.0 0.0 )
( 0.0 1.0 1.0 )
,( 0.0 0.0 1.0 )
( 1.0 0.0 0.0 )
( 0.0 1.0 0.0 )
,1.0)
(luDecomp' a)
es la descomposición (o factorización) LU con pivote total (del inglés "Lower-Upper") de la matriz A expresada como (U,L,P,Q,d,e), donde U es una matriz triangular superior, L es una matriz triangular inferior unitaria, P y Q son matrices de permutación, d es el determinante de P y e es el determinante de Q, tales que PAQ = LU. Además, para todo (i,j), L(i,j) ≤ 1. Por ejemplo,
ghci> luDecomp' (fromLists [[1,0],[0,2],[0,0]])
(( 2.0 0.0 )
( 0.0 1.0 )
( 0.0 0.0 )
,( 1.0 0.0 0.0 )
( 0.0 1.0 0.0 )
( 0.0 0.0 1.0 )
,( 0.0 1.0 0.0 )
( 1.0 0.0 0.0 )
( 0.0 0.0 1.0 )
,( 0.0 1.0 )
( 1.0 0.0 )
,-1.0
,-1.0)
(cholDecomp a)
es la descomposición de Cholesky es una es una matriz triangular inferior con entradas diagonales estrictamente positivas L tal que A = LL' donde L' es la conjugada traspuesta de L. Esta es la descomposición de Cholesky. Por ejemplo,
ghci> cholDecomp (fromLists [[2,-1,0],[-1,2,-1],[0,-1,2]])
( 1.4142135623730951 0.0 0.0 )
( -0.7071067811865475 1.224744871391589 0.0 )
( 0.0 -0.8164965809277261 1.1547005383792515 )
(trace p)
es la traza (i.e. suma de los elementos de la digonal) de la matriz p. Por ejemplo,
ghci> trace (fromLists [[1,2,3],[4,5,6],[7,8,9]])
15
(diagProd p)
es el producto de los elementos de la diagonal de la matrizPor ejemplo,
ghci> diagProd (fromLists [[1,2,3],[4,5,6],[7,8,9]])
45
(detLaplace p)
es el determinante de la matriz p calculado mediante la expansión de Laplace. Por ejemplo,
ghci> detLaplace (fromLists [[1,2,3],[4,5,6],[7,8,9]])
0
ghci> detLaplace (fromLists [[1,2,3],[4,0,6],[7,8,9]])
60
(detLU p)
es el determinante de la matriz p calculado mediante la descomposición LU. Por ejemplo,
ghci> detLU (fromLists [[1,2,3],[4,0,6],[7,8,9]])
60.00000000000001