Learn R Programming

mixAK (version 2.2)

MatMPpinv: Moore-Penrose pseudoinverse of a squared matrix

Description

For a matrix $\boldsymbol{A}$ its Moore-Penrose pseudoinverse is such a matrix $\boldsymbol{A}^+$ which satisfies l{ (i) $\boldsymbol{A}\boldsymbol{A}^+\boldsymbol{A} = \boldsymbol{A}$, (ii) $\boldsymbol{A}^+\boldsymbol{A}\boldsymbol{A}^+ = \boldsymbol{A}^+$, (iii) $(\boldsymbol{A}\boldsymbol{A}^+)' = \boldsymbol{A}\boldsymbol{A}^+$, (iv) $(\boldsymbol{A}^+\boldsymbol{A}) = \boldsymbol{A}^+\boldsymbol{A}$. } Computation is done using spectral decomposition. At this moment, it is implemented for symmetric matrices only.

Usage

MatMPpinv(A)

Arguments

A
either a numeric vector in which case inverse of each element of A is returned or a squared matrix.

Value

  • Either a numeric vector or a matrix.

References

Golub, G. H. and Van Loan, C. F. (1996, Sec. 5.5). Matrix Computations. Third Edition. Baltimore: The Johns Hopkins University Press.

Examples

Run this code
set.seed(770328)
A <- rWishart(1, 5, diag(4))
Ainv <- MatMPpinv(A)

### Check the conditions
prec <- 13
round(A - A %*% Ainv %*% A, prec)
round(Ainv - Ainv %*% A %*% Ainv, prec)
round(A %*% Ainv - t(A %*% Ainv), prec)
round(Ainv %*% A - t(Ainv %*% A), prec)

Run the code above in your browser using DataLab