## Documentation Center |

Moore-Penrose pseudoinverse of matrix

`B = pinv(A)B = pinv(A,tol)`

The Moore-Penrose pseudoinverse is a matrix `B` of
the same dimensions as `A'` satisfying four conditions:

A*B*A = A B*A*B = B A*B is Hermitian B*A is Hermitian

The computation is based on `svd(A)` and any
singular values less than `tol` are treated as zero.

`B = pinv(A)` returns the
Moore-Penrose pseudoinverse of `A`.

`B = pinv(A,tol)` returns
the Moore-Penrose pseudoinverse and overrides the default tolerance, `max(size(A))*norm(A)*eps`.

If `A` is square and not singular, then `pinv(A)` is
an expensive way to compute `inv(A)`. If `A` is
not square, or is square and singular, then `inv(A)` does
not exist. In these cases, `pinv(A)` has some of,
but not all, the properties of `inv(A)`.

If `A` has more rows than columns and is not
of full rank, then the overdetermined least squares
problem

minimize norm(A*x-b)

does not have a unique solution. Two of the infinitely many solutions are

x = pinv(A)*b

and

y = A\b

These two are distinguished by the facts that `norm(x)` is
smaller than the norm of any other solution and that `y` has
the fewest possible nonzero components.

For example, the matrix generated by

A = magic(8); A = A(:,1:6)

is an 8-by-6 matrix that happens to have `rank(A) =
3`.

A = 64 2 3 61 60 6 9 55 54 12 13 51 17 47 46 20 21 43 40 26 27 37 36 30 32 34 35 29 28 38 41 23 22 44 45 19 49 15 14 52 53 11 8 58 59 5 4 62

The right-hand side is `b = 260*ones(8,1)`,

b = 260 260 260 260 260 260 260 260

The scale factor 260 is the 8-by-8 magic sum. With all eight
columns, one solution to `A*x = b` would be a vector
of all `1`'s. With only six columns, the equations
are still consistent, so a solution exists, but it is not all `1`'s.
Since the matrix is rank deficient, there are infinitely many solutions.
Two of them are

x = pinv(A)*b

which is

x = 1.1538 1.4615 1.3846 1.3846 1.4615 1.1538

and

y = A\b

which produces this result.

Warning: Rank deficient, rank = 3 tol = 1.8829e-013. y = 4.0000 5.0000 0 0 0 -1.0000

Both of these are exact solutions in the sense that `norm(A`*`x-b)` and `norm(A`*`y-b`)
are on the order of roundoff error. The solution `x` is
special because

norm(x) = 3.2817

is smaller than the norm of any other solution, including

norm(y) = 6.4807

On the other hand, the solution `y` is special
because it has only three nonzero components.

Was this topic helpful?