| MATLAB® | ![]() |
| On this page… |
|---|
If A is square and nonsingular, the equations AX = I and XA = I have the same solution, X. This solution is called the inverse of A, is denoted by A-1, and is computed by the function inv. The determinant of a matrix is useful in theoretical considerations and some types of symbolic computation, but its scaling and roundoff 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. On the other hand,
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 roundoff error, X = inv(A)*B would theoretically be the same as X = A\B and Y = B*inv(A) would theoretically be 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 XA = I does not have a solution. A partial replacement for the inverse is provided by the Moore-Penrose pseudoinverse, which is computed by the pinv function:
format short
rand('state', 0);
C = fix(10*rand(3,2));
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-n with m > n and full rank n, then each of the three statements
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 r is the rank of 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.
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 singular to working precision.
z =
Inf
Inf
Inf
![]() | Systems of Linear Equations | Factorizations | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |