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.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

If * A* is square and nonsingular, the equations

`inv`

.The *determinant* of a matrix is useful in
theoretical considerations and some types of symbolic computation,
but its scaling and round-off error properties make it far less satisfactory
for numeric computation. Nevertheless, the function `det`

computes the determinant of a square
matrix:

A = pascal(3) A = 1 1 1 1 2 3 1 3 6 d = det(A) X = inv(A) d = 1 X = 3 -3 1 -3 5 -2 1 -2 1

Again, because `A`

is symmetric, has integer
elements, and has determinant equal to one, so does its inverse. However,

B = magic(3) B = 8 1 6 3 5 7 4 9 2 d = det(B) X = inv(B) d = -360 X = 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028

Closer examination of the elements of `X`

,
or use of `format rat`

, would reveal that they are
integers divided by 360.

If `A`

is square and nonsingular, then, without
round-off error, `X = inv(A)*B`

is theoretically
the same as `X = A\B`

and `Y = B*inv(A)`

is
theoretically the same as `Y = B/A`

. But the computations
involving the backslash and slash operators are preferable because
they require less computer time, less memory, and have better error-detection
properties.

Rectangular matrices do not have inverses or determinants. At
least one of the equations * AX = I* and

`pinv`

function.format short C = [9 4 2 8 6 7]; X = pinv(C) X = 0.1159 -0.0729 0.0171 -0.0534 0.1152 0.0418

The matrix

Q = X*C Q = 1.0000 0.0000 0.0000 1.0000

is the 2-by-2 identity, but the matrix

P = C*X P = 0.8293 -0.1958 0.3213 -0.1958 0.7754 0.3685 0.3213 0.3685 0.3952

is not the 3-by-3 identity. However, `P`

acts
like an identity on a portion of the space in the sense that `P`

is
symmetric, `P*C`

is equal to `C`

,
and `X*P`

is equal to `X`

.

If `A`

is * m*-by-

x = A\b x = pinv(A)*b x = inv(A'*A)*A'*b

theoretically computes the same least-squares solution `x`

,
although the backslash operator does it faster.

However, if `A`

does not have full rank, the
solution to the least-squares problem is not unique. There are many
vectors `x`

that minimize

norm(A*x -b)

The solution computed by `x = A\b`

is a basic
solution; it has at most * r* nonzero components,
where

`A`

. The
solution computed by `x = pinv(A)*b`

is the minimal
norm solution because it minimizes `norm(x)`

. An
attempt to compute a solution with `x = inv(A'*A)*A'*b`

fails
because `A'*A`

is singular.Here is an example that illustrates the various solutions:

A = [ 1 2 3 4 5 6 7 8 9 10 11 12 ];

does not have full rank. Its second column is the average of the first and third columns. If

b = A(:,2)

is the second column, then an obvious solution to ```
A*x
= b
```

is `x = [0 1 0]'`

. But none of the
approaches computes that `x`

. The backslash operator
gives

x = A\b Warning: Rank deficient, rank = 2, tol = 1.4594e-014. x = 0.5000 0 0.5000

This solution has two nonzero components. The pseudoinverse approach gives

y = pinv(A)*b y = 0.3333 0.3333 0.3333

There is no warning about rank deficiency. But ```
norm(y)
= 0.5774
```

is less than `norm(x) = 0.7071`

.
Finally,

z = inv(A'*A)*A'*b

fails completely:

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.868649e-018. z = -0.8594 1.3438 -0.6875

Was this topic helpful?