Duplication and elimination matrices explained

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

Dn

is the unique

n2 x

n(n+1)
2
matrix which, for any

n x n

symmetric matrix

A

, transforms

vech(A)

into

vec(A)

:

Dnvech(A)=vec(A)

.

For the

2 x 2

symmetric matrix

A=\left[\begin{smallmatrix}a&b\b&d\end{smallmatrix}\right]

, this transformation reads

Dnvech(A)=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 x n

matrix is:
T
D
n

=\sum\limitsiuij(vecTij)T

Where:

uij

is a unit vector of order
1
2

n(n+1)

having the value

1

in the position

(j-1)n+i-

1
2

j(j-1)

and 0 elsewhere;

Tij

is a

n x n

matrix with 1 in position

(i,j)

and

(j,i)

and zero elsewhere

Here is a C++ function using Armadillo (C++ library):arma::mat duplication_matrix(const int &n)

Elimination matrix

An elimination matrix

Ln

is a
n(n+1)
2

x n2

matrix which, for any

n x n

matrix

A

, transforms

vec(A)

into

vech(A)

:

Lnvec(A)=vech(A)

[1]

By the explicit (constructive) definition given by, the

1
2

n(n+1)

by

n2

elimination matrix

Ln

is given by

Ln=\sumiuijvec(Eij)T=\sumi(uij

T
e
j

T),
e
i
where

ei

is a unit vector whose

i

-th element is one and zeros elsewhere, and

Eij=eie

T
j
.

Here is a C++ function using Armadillo (C++ library):arma::mat elimination_matrix(const int &n)

For the

2 x 2

matrix

A=\left[\begin{smallmatrix}a&b\c&d\end{smallmatrix}\right]

, one choice for this transformation is given by

Lnvec(A)=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

  1. , Definition 3.1

References