# pinv

## Purpose

Moore-Penrose pseudoinverse of a matrix.

## Synopsis

    X = pinv(A)
    X = pinv(A,tol)

## Description

`X = pinv(A)` produces the Moore-Penrose pseudoinverse, which is a matrix `X` of the same dimensions as `A'` satisfying four conditions:

    A*X*A = A
    X*A*X = X
    A*X is Hermitian
    X*A is Hermitian

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

    tol = max(size(A))*norm(A)*eps

This tolerance can be overridden with `X = pinv(A,tol)`.

## Examples

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 which 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 1s. With only six columns, the equations are still consistent, so a solution exists, but it is not all 1s. 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 is

    y =
        3.0000
        4.0000
             0
             0
        1.0000
             0

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.

## See Also

    inv, qr, rank, svd

(c) Copyright 1994 by The MathWorks, Inc.