Duplication and elimination matrices
In-game article clicks load inline without leaving the challenge.
In mathematics, especially in linear algebra and matrix theory, the duplication matrix and the elimination matrix are linear transformations used for transforming half-vectorizations of matrices into vectorizations or (respectively) vice versa.
Duplication matrix
The duplication matrix D n {\displaystyle D_{n}} is the unique n 2 × n ( n + 1 ) 2 {\displaystyle n^{2}\times {\frac {n(n+1)}{2}}} matrix which, for any n × n {\displaystyle n\times n} symmetric matrix A {\displaystyle A}, transforms v e c h ( A ) {\displaystyle \mathrm {vech} (A)} into v e c ( A ) {\displaystyle \mathrm {vec} (A)}:
D n v e c h ( A ) = v e c ( A ) {\displaystyle D_{n}\mathrm {vech} (A)=\mathrm {vec} (A)}.
For the 2 × 2 {\displaystyle 2\times 2} symmetric matrix A = [ a b b d ] {\displaystyle A=\left[{\begin{smallmatrix}a&b\\b&d\end{smallmatrix}}\right]}, this transformation reads
D n v e c h ( A ) = v e c ( A ) ⟹ [ 1 0 0 0 1 0 0 1 0 0 0 1 ] [ a b d ] = [ a b b d ] {\displaystyle D_{n}\mathrm {vech} (A)=\mathrm {vec} (A)\implies {\begin{bmatrix}1&0&0\\0&1&0\\0&1&0\\0&0&1\end{bmatrix}}{\begin{bmatrix}a\\b\\d\end{bmatrix}}={\begin{bmatrix}a\\b\\b\\d\end{bmatrix}}}
The explicit formula for calculating the duplication matrix for a n × n {\displaystyle n\times n} matrix is:
D n T = ∑ i ≥ j u i j ( v e c T i j ) T {\displaystyle D_{n}^{T}=\sum \limits _{i\geq j}u_{ij}(\mathrm {vec} T_{ij})^{T}}
Where:
- u i j {\displaystyle u_{ij}} is a unit vector of order 1 2 n ( n + 1 ) {\displaystyle {\frac {1}{2}}n(n+1)} having the value 1 {\displaystyle 1} in the position ( j − 1 ) n + i − 1 2 j ( j − 1 ) {\displaystyle (j-1)n+i-{\frac {1}{2}}j(j-1)} and 0 elsewhere;
- T i j {\displaystyle T_{ij}} is a n × n {\displaystyle n\times n} matrix with 1 in position ( i , j ) {\displaystyle (i,j)} and ( j , i ) {\displaystyle (j,i)} and zero elsewhere
Here is a C++ function using Armadillo (C++ library):
Elimination matrix
An elimination matrix L n {\displaystyle L_{n}} is a n ( n + 1 ) 2 × n 2 {\displaystyle {\frac {n(n+1)}{2}}\times n^{2}} matrix which, for any n × n {\displaystyle n\times n} matrix A {\displaystyle A}, transforms v e c ( A ) {\displaystyle \mathrm {vec} (A)} into v e c h ( A ) {\displaystyle \mathrm {vech} (A)}:
L n v e c ( A ) = v e c h ( A ) {\displaystyle L_{n}\mathrm {vec} (A)=\mathrm {vech} (A)}.
By the explicit (constructive) definition given by Magnus & Neudecker (1980), the 1 2 n ( n + 1 ) {\displaystyle {\frac {1}{2}}n(n+1)} by n 2 {\displaystyle n^{2}} elimination matrix L n {\displaystyle L_{n}} is given by
L n = ∑ i ≥ j u i j v e c ( E i j ) T = ∑ i ≥ j ( u i j ⊗ e j T ⊗ e i T ) , {\displaystyle L_{n}=\sum _{i\geq j}u_{ij}\mathrm {vec} (E_{ij})^{T}=\sum _{i\geq j}(u_{ij}\otimes e_{j}^{T}\otimes e_{i}^{T}),}
where e i {\displaystyle e_{i}} is a unit vector whose i {\displaystyle i}-th element is one and zeros elsewhere, and E i j = e i e j T {\displaystyle E_{ij}=e_{i}e_{j}^{T}}.
Here is a C++ function using Armadillo (C++ library):
For the 2 × 2 {\displaystyle 2\times 2} matrix A = [ a b c d ] {\displaystyle A=\left[{\begin{smallmatrix}a&b\\c&d\end{smallmatrix}}\right]}, one choice for this transformation is given by
L n v e c ( A ) = v e c h ( A ) ⟹ [ 1 0 0 0 0 1 0 0 0 0 0 1 ] [ a c b d ] = [ a c d ] {\displaystyle L_{n}\mathrm {vec} (A)=\mathrm {vech} (A)\implies {\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&0&1\end{bmatrix}}{\begin{bmatrix}a\\c\\b\\d\end{bmatrix}}={\begin{bmatrix}a\\c\\d\end{bmatrix}}}.
Notes
- Magnus, Jan R.; Neudecker, Heinz (1980), , SIAM Journal on Algebraic and Discrete Methods, 1 (4): 422–449, doi:, ISSN.
- Jan R. Magnus and Heinz Neudecker (1988), Matrix Differential Calculus with Applications in Statistics and Econometrics, Wiley. ISBN 978-0-471-98633-1.
- Jan R. Magnus (1988), Linear Structures, Oxford University Press. ISBN 978-0-19-520655-5