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?