简体   繁体   中英

Matlab, operator A\B

What is the result of the operation A\\B, where A(1, m) and B (1, m)?

In the manual it is written:

A\B returns a least-squares solution to the system of equations A*x= B.

So it means x = inv (A'*A)*A'*B? However, the matrix A'*A is singular...

Let us suppose:

A=[1 2 3]
B=[6 7 6]
A\B

0         0         0
0         0         0
2.0000    2.3333    2.0000

If ve use MLS:

C = inv (A'*A)   singular matrix
C = pinv(A'*A)

0.0051    0.0102    0.0153
0.0102    0.0204    0.0306
0.0153    0.0306    0.0459

D= C*A'*B

0.4286    0.5000    0.4286
0.8571    1.0000    0.8571
1.2857    1.5000    1.2857

So results A\\B and inv (A'*A)*A'*B are different...

My MATLAB (R2010b) says quite a lot about what A\\B does:

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 and B 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, X minimizes 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 .

x = inv (A'*A)*A'*B goes for over determined systems (ie which feature A as an nxm matrix with n>m ; in these circumstances A'A is invertible).

In your case you have an under determined system.


Thus, what may happen?

My opinion, although you can check, at least in your case :

when you do A\\B matlab solves an optimization problem in the inverse sense wrt the usual least squares, that is

 X = argmin_{X \in S} ||X||,

where S is the set of solutions. In other words, it gives you the solution of the system having minimum L^2 norm. (Consider that you can handle the problem by hands, at least in your case).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM