Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

pinv

Moore-Penrose pseudoinverse of matrix

Syntax

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

Definitions

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.

Description

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))*eps(norm(A)).

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 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.

See Also

| | |

Introduced before R2006a

Was this topic helpful?