Duplication_and_elimination_matrices

Duplication and elimination matrices

Duplication and elimination matrices

Add article description


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

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

References

  • 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

Share this article:

This article uses material from the Wikipedia article Duplication_and_elimination_matrices, and is written by contributors. Text is available under a CC BY-SA 4.0 International License; additional terms may apply. Images, videos and audio are available under their respective licenses.