Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Duplication and elimination matrices

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.

We don't have any images related to Duplication and elimination matrices yet.
We don't have any YouTube videos related to Duplication and elimination matrices yet.
We don't have any PDF documents related to Duplication and elimination matrices yet.
We don't have any Books related to Duplication and elimination matrices yet.
We don't have any archived web articles related to Duplication and elimination matrices yet.

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):

arma::mat duplication_matrix(const int &n) { arma::mat out((n*(n+1))/2, n*n, arma::fill::zeros); for (int j = 0; j < n; ++j) { for (int i = j; i < n; ++i) { arma::vec u((n*(n+1))/2, arma::fill::zeros); u(j*n+i-((j+1)*j)/2) = 1.0; arma::mat T(n,n, arma::fill::zeros); T(i,j) = 1.0; T(j,i) = 1.0; out += u * arma::trans(arma::vectorise(T)); } } return out.t(); }

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)} . 1

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):

arma::mat elimination_matrix(const int &n) { arma::mat out((n*(n+1))/2, n*n, arma::fill::zeros); for (int j = 0; j < n; ++j) { arma::rowvec e_j(n, arma::fill::zeros); e_j(j) = 1.0; for (int i = j; i < n; ++i) { arma::vec u((n*(n+1))/2, arma::fill::zeros); u(j*n+i-((j+1)*j)/2) = 1.0; arma::rowvec e_i(n, arma::fill::zeros); e_i(i) = 1.0; out += arma::kron(u, arma::kron(e_j, e_i)); } } return out; }

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

References

  1. Magnus & Neudecker (1980), Definition 3.1 - Magnus, Jan R.; Neudecker, Heinz (1980), "The elimination matrix: some lemmas and applications", SIAM Journal on Algebraic and Discrete Methods, 1 (4): 422–449, doi:10.1137/0601049, ISSN 0196-5212 http://repository.uvt.nl/id/ir-uvt-nl:oai:wo.uvt.nl:153210