Accelerating the pace of engineering and science

# Documentation Center

• Trial Software
• Product Updates

# pinv

Moore-Penrose pseudoinverse of matrix

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

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

| | |

Was this topic helpful?