x = A\b;
mldivide \, mrdivide / -Left or right matrix division
Syntax
mldivide(A,B) A\B mrdivide(B,A) B/A
Description
mldivide(A,B) and the equivalent A\B perform matrix left division (back slash). A and B must be matrices that have the same number of rows, unless A is a scalar, in which case A\B performs element-wise division — that is, A\B = A.\B.
If A is a square matrix, A\B is roughly the same as inv(A)*B, except it is computed in a different way. If A is an n-by-n matrix andB is a column vector with n elements, or a matrix with several such columns, then X = A\B is the solution to the equation AX = B. A warning message is displayed if A is badly scaled or nearly singular.
If A is an m-by-n matrix with m ~= n and B is a column vector with m components, or a matrix with several such columns, then X = A\B is the solution in the least squares sense to the under- or overdetermined system of equations AX = B. In other words, Xminimizes norm(A*X - B), the length of the vector AX - B. The rank k of A is determined from the QR decomposition with column pivoting. The computed solution X has at most k nonzero elements per column. If k < n, this is usually not the same solution as x = pinv(A)*B, which returns a least squares solution.
mrdivide(B,A) and the equivalent B/A perform matrix right division (forward slash). B and A must have the same number of columns.
If A is a square matrix, B/A is roughly the same as B*inv(A). If A is an n-by-n matrix and B is a row vector with n elements, or a matrix with several such rows, then X = B/A is the solution to the equation XA = B computed by Gaussian elimination with partial pivoting. A warning message is displayed if A is badly scaled or nearly singular.
If B is an m-by-n matrix with m ~= n and A is a column vector with m components, or a matrix with several such columns, then X = B/A is the solution in the least squares sense to the under- or overdetermined system of equations XA = B.
Least Squares Solutions
If the equation Ax = b does not have a solution (and A is not a square matrix), x = A\b returns a least squares solution — in other words, a solution that minimizes the length of the vector Ax - b, which is equal to norm(A*x - b). See Example 3 for an example of this.
Examples
Example 1
Suppose that A and b are the following.
A = magic(3) A = 8 1 6 3 5 7 4 9 2 b = [1;2;3] b = 1 2 3
To solve the matrix equation Ax = b, enter
x=A\b x = 0.0500 0.3000 0.0500
You can verify that x is the solution to the equation as follows.
A*x ans = 1.0000 2.0000 3.0000
Example 2 — A Singular
If A is singular, A\b returns the following warning.
Warning: Matrix is singular to working precision.
In this case, Ax = b might not have a solution. For example,
A = magic(5); A(:,1) = zeros(1,5); % Set column 1 of A to zeros b = [1;2;5;7;7]; x = A\b Warning: Matrix is singular to working precision. ans = NaN NaN NaN NaN NaN
If you get this warning, you can still attempt to solve Ax = b using the pseudoinverse function pinv.
x = pinv(A)*b x = 0 0.0209 0.2717 0.0808 -0.0321
The result x is least squares solution to Ax = b. To determine whether x is a exact solution — that is, a solution for which Ax - b = 0 — simply compute
A*x-b ans = -0.0603 0.6246 -0.4320 0.0141 0.0415
The answer is not the zero vector, so x is not an exact solution.
Pseudoinverses, in the online MATLAB Mathematics documentation, provides more examples of solving linear systems using pinv.
Example 3
Suppose that
A = [1 0 0;1 0 0]; b = [1; 2];
Note that Ax = b cannot have a solution, because A*x has equal entries for any x. Entering
x = A\b
returns the least squares solution
x = 1.5000 0 0
along with a warning that A is rank deficient. Note that x is not an exact solution:
A*x-b ans = 0.5000 -0.5000
Class Support
When computing X = A\B or X = A/B, the matrices A and B can have data type double or single. The following rules determine the data type of the result:
If both A and B have type double, X has type double.
If either A or B has type single, X has type single.
See Also
'Enginius > Matlab' 카테고리의 다른 글
syms + ezplot = rocks! (0) | 2011.10.27 |
---|---|
eig (Eigenvalue and Eigenvector) (0) | 2011.10.27 |
hist (Histogram) (0) | 2011.10.26 |
fitting (polyfit, fit) (0) | 2011.10.25 |
subplot (0) | 2011.10.25 |