ginv {MASS} | R Documentation

## Generalized Inverse of a Matrix

### Description

Calculates the Moore-Penrose generalized inverse of a matrix `X`.

### Usage

    ginv(X, tol=sqrt(.Machine$double.eps))

### Arguments

`X` | Matrix for which the Moore-Penrose inverse is required.
`tol` | A relative tolerance to detect zero singular values.

### Value

A MP generalized inverse matrix for `X`.

### References

Venables & Ripley, Chapter 2.

### See Also

`solve`, `svd`, `eigen`

### Examples

    # The function is currently defined as
    function(X, tol = sqrt(.Machine$double.eps))
    {
    ## Generalized Inverse of a Matrix
      dnx <- dimnames(X)
      if(is.null(dnx)) dnx <- vector("list", 2)
      s <- svd(X)
      nz <- s$d > tol * s$d[1]
      structure(
        if(any(nz)) s$v[, nz] %*% (t(s$u[, nz])/s$d[nz]) else X,
        dimnames = dnx[2:1])
    }