Moore-Penrose Pseudoinverse
Calculates the Moore-Penrose pseudoinverse of the input matrix using a truncated singular value decomposition.
mpinv(X, tol = NULL)
X
: Real-valued matrix.tol
: Stability tolerance for singular values.Default tolerance is tol = max(dim(X)) * .Machine$double.eps
.
Basically returns Y$v %*% diag(1/Y$d) %*% t(Y$u)
where Y = svd(X)
.
Returns pseudoinverse of X
.
Moore, E. H. (1920). On the reciprocal of the general algebraic matrix. Bulletin of the American Mathematical Society 26, 394-395.
Penrose, R. (1950). A generalized inverse for matrices. Mathematical Proceedings of the Cambridge Philosophical Society 51, 406-413.
Nathaniel E. Helwig helwig@umn.edu
########## EXAMPLE ########## set.seed(1) X <- matrix(rnorm(2000),100,20) Xi <- mpinv(X) sum( ( X - X %*% Xi %*% X )^2 ) sum( ( Xi - Xi %*% X %*% Xi )^2 ) isSymmetric(X %*% Xi) isSymmetric(Xi %*% X)
Useful links