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
[edit]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)}
:
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
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)
}
return out.t();
}
Elimination matrix
[edit]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)}
:
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
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)
}
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
Notes
[edit]- ^ Magnus & Neudecker (1980), Definition 3.1
References
[edit]- 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.
- 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