MATLAB Understanding Matrix Division in Matlab: Solving Linear Systems

AI Thread Summary
The discussion clarifies the confusion surrounding the notation used in MATLAB for solving linear systems represented as Ax = b. The correct command is x = A\b, which utilizes MATLAB's efficient algorithm for matrix division, specifically designed for solving such equations. The backslash operator indicates that MATLAB will compute the solution using the inverse of A applied to b. In contrast, the expression b/A is incorrect for this context, as division is not defined for matrices in the same way it is for scalars. The conversation emphasizes that matrix multiplication is not commutative, meaning the order of operations matters significantly. Thus, solving Ax = b and xA = b are fundamentally different problems, requiring different operators. The distinction is crucial for understanding how to manipulate matrices correctly in MATLAB.
gfd43tg
Gold Member
Messages
947
Reaction score
48
Hello, I am confused about a concept,

Suppose I am trying to solve a linear system ##Ax = b##

I want to know why is it when I solve for x, the command is x = A\b. Why would it not be x = b\A. One could see that if you divide x on both sides, then b/x = A. Is this not true for the matrix?
 
Physics news on Phys.org
The correct operation is:
##x=A^{-1}b##

The "A\" notation tells MATLAB to make the inverse of A and apply it to the following vector, using an efficient process coded into the m-file. It's just a notation.

Division, like you did with b/x, is not defined for vectors and matrixes - which you should be able to tell by experimenting with a few examples.

Code:
octave:41> A=magic(3)
A =

   8   1   6
   3   5   7
   4   9   2

octave:42> x=[1,2,3]'
x =

   1
   2
   3

octave:43> b=A*x
b =

   28
   34
   28

octave:44> b/x
ans =

   2.0000   4.0000   6.0000
   2.4286   4.8571   7.2857
   2.0000   4.0000   6.0000
... clearly A≠b/x
(Also try this by hand.)

You should understand that MATLAB is a computer program which implements commands according to it's own internal logic. The full answer to your question is in how MATLAB interprets the forward-slash and backslash characters.

See discussion:
http://scicomp.stackexchange.com/qu...slash-operator-solve-ax-b-for-square-matrices
 
Last edited:
Matrix multiplication is not always commutative, like it is with scalars. So you can take for granted the fact that 5*3 = 3*5 = 15. But if you have something like the following it's different:

Code:
A = [1 2; 3 5];
B = [1 -1; -1 1];
A*B

ans =

    -1     1
    -2     2

B*A

ans =

    -2    -3
     2     3

So ultimately this means that solving Ax = b and solving xA = b are two different problems.

If you solve Ax = b, you get x = A^{-1}b. Notice that A is on the left in each case.
If you solve xA = b, you get x = bA^{-1}, and, as I just mentioned, this can be different from the form above. Here A is on the right.

So, we have two different problems requiring 2 different operators.

To solve Ax = b, you use x = A\b. That is, if A is on the left, use mldivide \.
To solve xA = b, you use x = b/A. If A is on the right, use mrdivide /.

(For more info, see http://blogs.mathworks.com/cleve/2013/08/19/backslash/ )

MATLAB solves these equations quite efficiently depending on the properties of the coefficient matrix, A. A description of the algorithm is here at the bottom of the page: http://www.mathworks.com/help/matlab/ref/mldivide.html
 
Back
Top