En matemáticas , especialmente en álgebra lineal y teoría de matrices , la matriz de duplicación y la matriz de eliminación son transformaciones lineales utilizadas para transformar semivectorizaciones de matrices en vectorizaciones o (respectivamente) viceversa.
Matriz de duplicación
La matriz de duplicación es la única matriz que, para cualquier matriz simétrica , se transforma en :
- .
Para la matriz simétrica , esta transformación se lee
La fórmula explícita para calcular la matriz de duplicación de una matriz es:
Dónde:
- es un vector unitario de orden que tiene el valor en la posición y 0 en el resto;
- es una matriz con 1 en posición y cero en el resto
Aquí hay una función de C++ que utiliza Armadillo (biblioteca de C++) :
arma :: mat duplication_matrix ( const int & n ) { arma :: mat out (( n * ( n + 1 )) / 2 , n * n , arma :: fill :: ceros ); for ( int j = 0 ; j < n ; ++ j ) { for ( int i = j ; i < n ; ++ i ) { arma :: vec u (( n * ( n + 1 )) / 2 , arma :: fill :: ceros ); u ( j * n + i - (( j + 1 ) * j ) / 2 ) = 1.0 ; arma :: mat T ( n , n , arma :: fill :: ceros ); T ( i , j ) = 1.0 ; T ( j , i ) = 1.0 ; out += u * arma :: trans ( arma :: vectorise ( T )); } } devuelve fuera . t (); }
Matriz de eliminación
Una matriz de eliminación es una matriz que, para cualquier matriz , se transforma en :
- . [1]
Según la definición explícita (constructiva) dada por Magnus y Neudecker (1980), la matriz de eliminación está dada por
donde es un vector unitario cuyo elemento -ésimo es uno y ceros en el resto, y .
Aquí hay una función de C++ que utiliza Armadillo (biblioteca de C++) :
arma :: mat matriz_eliminación ( const int & n ) { arma :: mat out (( n * ( n + 1 )) / 2 , n * n , arma :: rellenar :: ceros ); for ( int j = 0 ; j < n ; ++ j ) { arma :: rowvec e_j ( n , arma :: rellenar :: ceros ); e_j ( j ) = 1.0 ; for ( int i = j ; i < n ; ++ i ) { arma :: vec u (( n * ( n + 1 )) / 2 , arma :: rellenar :: ceros ); u ( j * n + i - (( j + 1 ) * j ) / 2 ) = 1.0 ; arma :: rowvec e_i ( n , arma :: rellenar :: ceros ); e_i ( i ) = 1.0 ; fuera += arma :: kron ( u , arma :: kron ( e_j , e_i )); } } devolver fuera ; }
Para la matriz , una opción para esta transformación viene dada por
- .
Notas
- ^ Magnus y Neudecker (1980), Definición 3.1
Referencias
- Magnus, Jan R.; Neudecker, Heinz (1980), "La matriz de eliminación: algunos lemas y aplicaciones", SIAM Journal on Algebraic and Discrete Methods , 1 (4): 422–449, doi :10.1137/0601049, ISSN 0196-5212.
- Jan R. Magnus y Heinz Neudecker (1988), Cálculo diferencial matricial con aplicaciones en estadística y econometría , Wiley. ISBN 0-471-98633-X .
- Jan R. Magnus (1988), Estructuras lineales , Oxford University Press. ISBN 0-19-520655-X