Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Duplication and elimination matrices

From Wikipedia, the free encyclopedia

Inmathematics, especially inlinear algebra andmatrix theory, theduplication matrix and theelimination matrix arelinear transformations used for transforminghalf-vectorizations ofmatrices intovectorizations or (respectively) vice versa.

Duplication matrix

[edit]

The duplication matrixDn{\displaystyle D_{n}} is the uniquen2×n(n+1)2{\displaystyle n^{2}\times {\frac {n(n+1)}{2}}} matrix which, for anyn×n{\displaystyle n\times n}symmetric matrixA{\displaystyle A}, transformsvech(A){\displaystyle \mathrm {vech} (A)} intovec(A){\displaystyle \mathrm {vec} (A)}:

Dnvech(A)=vec(A){\displaystyle D_{n}\mathrm {vech} (A)=\mathrm {vec} (A)}.

For the2×2{\displaystyle 2\times 2} symmetric matrixA=[abbd]{\displaystyle A=\left[{\begin{smallmatrix}a&b\\b&d\end{smallmatrix}}\right]}, this transformation reads

Dnvech(A)=vec(A)[100010010001][abd]=[abbd]{\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 an×n{\displaystyle n\times n} matrix is:

DnT=ijuij(vecTij)T{\displaystyle D_{n}^{T}=\sum \limits _{i\geq j}u_{ij}(\mathrm {vec} T_{ij})^{T}}

Where:

Here is aC++ function usingArmadillo (C++ library):

arma::matduplication_matrix(constint&n){arma::matout((n*(n+1))/2,n*n,arma::fill::zeros);for(intj=0;j<n;++j){for(inti=j;i<n;++i){arma::vecu((n*(n+1))/2,arma::fill::zeros);u(j*n+i-((j+1)*j)/2)=1.0;arma::matT(n,n,arma::fill::zeros);T(i,j)=1.0;T(j,i)=1.0;out+=u*arma::trans(arma::vectorise(T));}}returnout.t();}

Elimination matrix

[edit]

An elimination matrixLn{\displaystyle L_{n}} is an(n+1)2×n2{\displaystyle {\frac {n(n+1)}{2}}\times n^{2}} matrix which, for anyn×n{\displaystyle n\times n} matrixA{\displaystyle A}, transformsvec(A){\displaystyle \mathrm {vec} (A)} intovech(A){\displaystyle \mathrm {vech} (A)}:

Lnvec(A)=vech(A){\displaystyle L_{n}\mathrm {vec} (A)=\mathrm {vech} (A)}[1]

By the explicit (constructive) definition given byMagnus & Neudecker (1980), the12n(n+1){\displaystyle {\frac {1}{2}}n(n+1)} byn2{\displaystyle n^{2}} elimination matrixLn{\displaystyle L_{n}} is given by

Ln=ijuijvec(Eij)T=ij(uijejTeiT),{\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}),}

whereei{\displaystyle e_{i}} is a unit vector whosei{\displaystyle i}-th element is one and zeros elsewhere, andEij=eiejT{\displaystyle E_{ij}=e_{i}e_{j}^{T}}.

Here is aC++ function usingArmadillo (C++ library):

arma::matelimination_matrix(constint&n){arma::matout((n*(n+1))/2,n*n,arma::fill::zeros);for(intj=0;j<n;++j){arma::rowvece_j(n,arma::fill::zeros);e_j(j)=1.0;for(inti=j;i<n;++i){arma::vecu((n*(n+1))/2,arma::fill::zeros);u(j*n+i-((j+1)*j)/2)=1.0;arma::rowvece_i(n,arma::fill::zeros);e_i(i)=1.0;out+=arma::kron(u,arma::kron(e_j,e_i));}}returnout;}

For the2×2{\displaystyle 2\times 2} matrixA=[abcd]{\displaystyle A=\left[{\begin{smallmatrix}a&b\\c&d\end{smallmatrix}}\right]}, one choice for this transformation is given by

Lnvec(A)=vech(A)[100001000001][acbd]=[acd]{\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

[edit]
  1. ^Magnus & Neudecker (1980), Definition 3.1

References

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=Duplication_and_elimination_matrices&oldid=1312717092"
Category:

[8]ページ先頭

©2009-2025 Movatter.jp