MPinv(mat, tolerance = 100*.Machine$double.eps,
rank = NULL, method = "svd")
NULL
, in which case the rank of mat
is
determined numerically; or an integer specifying the rank of
mat
if it is known. No check is made on the validity of any
non-NULL
value."svd", "chol"
. The
specification method = "chol"
is valid only for
symmetric matrices."rank"
containing
the numerically determined rank of the matrix.method
= "chol"
.Courrieu, P. (2005). Fast computation of Moore-Penrose inverse matrices. Neural Information Processing 8, 25--29
ginv
A <- matrix(c(1, 1, 0,
1, 1, 0,
2, 3, 4), 3, 3)
B <- MPinv(A)
A %*% B %*% A - A # essentially zero
B %*% A %*% B - B # essentially zero
attr(B, "rank") # here 2
## demonstration that "svd" and "chol" deliver essentially the same
## results for symmetric matrices:
A <- crossprod(A)
MPinv(A) - MPinv(A, method = "chol") ## (essentially zero)
Run the code above in your browser using DataLab