Main Content

Moore-Penrose pseudoinverse

`B = pinv(`

returns the Moore-Penrose Pseudoinverse of matrix
`A`

)`A`

.

You can replace most uses of

`pinv`

applied to a vector`b`

, as in`pinv(A)*b`

, with`lsqminnorm(A,b)`

to get the minimum-norm least-squares solution of a system of linear equations.`lsqminnorm`

is generally more efficient than`pinv`

, and it also supports sparse matrices.

`pinv`

uses the singular value decomposition to form the
pseudoinverse of `A`

. Singular values along the diagonal of
`S`

that are smaller than `tol`

are treated as
zeros, and the representation of `A`

becomes:

$$\begin{array}{l}A=US{V}^{*}=\left[{U}_{1}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{U}_{2}\right]\left[\begin{array}{cc}{S}_{1}& 0\\ 0& 0\end{array}\right]{\left[{V}_{1}\text{\hspace{0.17em}}\text{\hspace{0.17em}}{V}_{2}\right]}^{*}\\ A={U}_{1}{S}_{1}{V}_{1}^{*}\text{\hspace{0.17em}}.\end{array}$$

The pseudoinverse of `A`

is then equal to:

$$B={V}_{1}{S}_{1}^{-1}{U}_{1}^{*}\text{\hspace{0.17em}}.$$

`inv`

| `qr`

| `rank`

| `svd`

| `lsqminnorm`

| `decomposition`