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
is the unique
matrix which, for any
symmetric matrix
, transforms
into
:
- .
For the
symmetric matrix
, this transformation reads
The explicit formula for calculating the duplication matrix for a
matrix is:
Where:
- is a unit vector of order
having the value
in the position
and 0 elsewhere;
- is a
matrix with 1 in position
and
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
[
edit
]
An elimination matrix
is a
matrix which, for any
matrix
, transforms
into
:
- .
[1]
By the explicit (constructive) definition given by
Magnus & Neudecker (1980)
, the
by
elimination matrix
is given by
where
is a unit vector whose
-th element is one and zeros elsewhere, and
.
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
matrix
, one choice for this transformation is given by
- .
Notes
[
edit
]
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
0-471-98633-X
.
- Jan R. Magnus (1988),
Linear Structures
, Oxford University Press.
ISBN
0-19-520655-X