En matemáticas , especialmente en álgebra lineal y teoría de matrices , la vectorización de una matriz es una transformación lineal que convierte la matriz en un vector columna . Específicamente, la vectorización de una matriz A m × n , denotada vec ( A ), es el vector de columna mn × 1 obtenido al apilar las columnas de la matriz A una encima de la otra:
Aquí, representa y el superíndice denota la transposición . La vectorización expresa, a través de coordenadas, el isomorfismo entre estos (es decir, de matrices y vectores) como espacios vectoriales.
Por ejemplo, para la matriz 2 × 2 , la vectorización es .
La conexión entre la vectorización de A y la vectorización de su transpuesta viene dada por la matriz de conmutación .
Compatibilidad con los productos Kronecker
La vectorización se usa con frecuencia junto con el producto de Kronecker para expresar la multiplicación de matrices como una transformación lineal en matrices. En particular,
para las matrices A , B y C de dimensiones k × l , l × m y m × n . [1] Por ejemplo, si(el endomorfismo adjunto del álgebra de Lie gl ( n , C ) de todas las matrices n × n con entradas complejas ), entonces, dónde es la matriz identidad n × n .
Hay otras dos formulaciones útiles:
De manera más general, se ha demostrado que la vectorización es un autoajuste en la estructura cerrada monoidal de cualquier categoría de matrices. [1]
Compatibilidad con productos Hadamard
La vectorización es un homomorfismo de álgebra desde el espacio de n × n matrices con el producto Hadamard (en sentido de entrada) a C n 2 con su producto Hadamard:
Compatibilidad con productos internos
La vectorización es una transformación unitaria del espacio de n × n matrices con el producto interno de Frobenius (o Hilbert-Schmidt ) a C n 2 :
donde el superíndice T denota la transposición conjugada .
Vectorización como suma lineal
La operación de vectorización matricial se puede escribir en términos de una suma lineal. Sea X una matriz m × n que queremos vectorizar, y sea e i el i -ésimo vector de base canónica para el espacio n -dimensional, es decir. Sea B i una matriz de bloques ( mn ) × m definida de la siguiente manera:
B i consta de n matrices de bloques de tamaño m × m , apiladas en columnas, y todas estas matrices son todas cero excepto la i -ésima, que es una matriz de identidad m × m I m .
Entonces, la versión vectorizada de X se puede expresar de la siguiente manera:
La multiplicación de X por e i extrae la i -ésima columna, mientras que la multiplicación por B i la coloca en la posición deseada en el vector final.
Alternativamente, la suma lineal se puede expresar utilizando el producto Kronecker :
Media vectorización
Para una matriz simétrica A , el vector vec ( A ) contiene más información de la estrictamente necesaria, ya que la matriz está completamente determinada por la simetría junto con la porción triangular inferior , es decir, las n ( n + 1) / 2 entradas en y debajo de la diagonal principal . Para tales matrices, la semi-vectorización es a veces más útil que la vectorización. La semivectorización, vech ( A ), de una matriz A simétrica n × n es el vector de columna n ( n + 1) / 2 × 1 obtenido vectorizando solo la parte triangular inferior de A :
Por ejemplo, para la matriz 2 × 2 , la mitad de la vectorización es .
Existen matrices únicas que transforman la semivectorización de una matriz en su vectorización y viceversa llamadas, respectivamente, matriz de duplicación y matriz de eliminación .
Lenguaje de programación
Los lenguajes de programación que implementan matrices pueden tener medios fáciles para la vectorización. En Matlab / GNU OctaveA
se puede vectorizar una matriz mediante A(:)
. GNU Octave también permite la vectorización y la semivectorización con vec(A)
y vech(A)
respectivamente. Julia también tiene la vec(A)
función. En Python, las matrices NumPy implementan el flatten
método [1] , mientras que en R el efecto deseado se puede lograr mediante las funciones c()
o as.vector()
. En R , la función vec()
del paquete 'ks' permite la vectorización y la función vech()
implementada en ambos paquetes 'ks' y 'sn' permite la mitad de la vectorización. [2] [3] [4]
Notas
- 1. ^ ^ La identidad para la vectorización de filas principales es .
Ver también
Referencias
- ^ Macedo, HD; Oliveira, JN (2013). "Escribir álgebra lineal: un enfoque orientado a biproductos". Ciencia de la Programación de Computadores . 78 (11): 2160–2191. arXiv : 1312.4818 . doi : 10.1016 / j.scico.2012.07.012 . S2CID 9846072 .
- ^ Duong, Tarn (2018). "ks: Kernel Smoothing" . Versión del paquete R 1.11.0 .
- ^ Azzalini, Adelchi (2017). "El paquete R 'sn': las distribuciones Skew-Normal y relacionadas, como Skew-t" . Versión del paquete R 1.5.1 .
- ^ Vinod, Hrishikesh D. (2011). "Reducción simultánea y apilamiento Vec" . Álgebra matricial práctica con R: aprendizaje activo y motivado con aplicaciones . Singapur: World Scientific. págs. 233–248. ISBN 978-981-4313-69-8- a través de Google Books .
- Jan R. Magnus y Heinz Neudecker (1999), Cálculo diferencial matricial con aplicaciones en estadística y econometría , 2ª ed., Wiley. ISBN 0-471-98633-X .