Understanding Matrix Division in Matlab: Solving Linear Systems

In summary: EfficiencyIn summary, MATLAB interprets the forward-slash and backslash characters to solve for x in a different way depending on the coefficient matrix A.
  • #1
gfd43tg
Gold Member
950
50
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
  • #2
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:
  • #3
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 [itex]Ax = b[/itex], you get [itex]x = A^{-1}b[/itex]. Notice that A is on the left in each case.
If you solve [itex]xA = b[/itex], you get [itex]x = bA^{-1}[/itex], 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
 

FAQ: Understanding Matrix Division in Matlab: Solving Linear Systems

What is matrix division in Matlab?

Matrix division in Matlab is a mathematical operation that involves dividing one matrix by another. This operation is used to solve systems of linear equations and perform other mathematical calculations involving matrices.

How is matrix division performed in Matlab?

In Matlab, matrix division is performed using the backslash operator (\) for left division and the forward slash operator (/) for right division. The syntax for left division is A\B, where A and B are matrices, and the result is the solution to the equation AX = B. The syntax for right division is A/B, where A and B are matrices, and the result is the solution to the equation XA = B.

What is the difference between left and right matrix division in Matlab?

The main difference between left and right matrix division in Matlab is the order in which the matrices are divided. In left division, A is divided by B, while in right division, B is divided by A. This leads to different results depending on the matrices used and the type of equation being solved.

Can matrix division result in an error in Matlab?

Yes, matrix division in Matlab can result in an error if the matrices used are not compatible for division. For left division, the number of columns in A must be equal to the number of rows in B, and for right division, the number of rows in A must be equal to the number of columns in B. If these conditions are not met, an error will be thrown.

Are there any other functions in Matlab that perform matrix division?

Yes, there are other functions in Matlab that can be used for matrix division, such as the mldivide function for left division and the mrdivide function for right division. These functions are equivalent to using the backslash and forward slash operators, but they allow for more control over the division process, such as specifying a tolerance value for the results.

Similar threads

Back
Top