# Inverse of a Matrix using Gauss-Jordan Elimination

by M. Bourne

In this section we see how Gauss-Jordan Elimination works using examples.

You can re-load this page as many times as you like and get a new set of numbers each time. You can also choose a different size matrix (at the bottom of the page).

(If you need some background first, go back to the Introduction to Matrices).

Choose the matrix size you are interested in and then click the button.

Matrix A:

The randomly-generated example appears below.

### Phone users

**NOTE:** If you're on a phone, you can scroll any **wide matrices** on this page to the right or left to see the whole expression.

## Example (3 × 3)

Find the inverse of the matrix *A* using Gauss-Jordan elimination.

A = |
3 | 10 | 6 | ||

12 | 8 | 13 | |||

11 | 14 | 2 |

### Our Procedure

We write matrix *A* on the left and the Identity matrix *I* on its right separated with a dotted line, as follows.
The result is called an **augmented** matrix.

We include row numbers to make it clearer.

3 | 10 | 6 | |

12 | 8 | 13 | |

11 | 14 | 2 |

1 | 0 | 0 | Row[1] | |

0 | 1 | 0 | Row[2] | |

0 | 0 | 1 | Row[3] |

Next we do several **row operations** on the 2 matrices and our aim is to end up with the identity matrix on the **left**, like this:

1 | 0 | 0 | |

0 | 1 | 0 | |

0 | 0 | 1 |

? | ? | ? | Row[1] | |

? | ? | ? | Row[2] | |

? | ? | ? | Row[3] |

(Technically, we are reducing matrix *A* to **reduced row echelon form**, also called **row canonical form**).

The resulting matrix on the right will be the **inverse matrix** of *A*.

Our row operations procedure is as follows:

- We get a "1" in the top left corner by dividing the first row
- Then we get "0" in the rest of the first column
- Then we need to get "1" in the second row, second column
- Then we make all the other entries in the second column "0".

We keep going like this until we are left with the identity matrix on the left.

Let's now go ahead and find the inverse.

### Solution

We start with:

3 | 10 | 6 | |

12 | 8 | 13 | |

11 | 14 | 2 |

1 | 0 | 0 | Row[1] | |

0 | 1 | 0 | Row[2] | |

0 | 0 | 1 | Row[3] |

### New Row [1]

**Divide Row [1] by 3** (to give us a "1" in the desired position):

This gives us:

1 | 3.3333 | 2 | |

12 | 8 | 13 | |

11 | 14 | 2 |

0.3333 | 0 | 0 | Row[1] | |

0 | 1 | 0 | Row[2] | |

0 | 0 | 1 | Row[3] |

### New Row [2]

**Row[2] − 12 × Row[1]** (to give us 0 in the desired position):

12 − 12 × 1 = 0

8 − 12 × 3.3333 = -32

13 − 12 × 2 = -11

0 − 12 × 0.3333 = -4

1 − 12 × 0 = 1

0 − 12 × 0 = 0

This gives us our new Row [2]:

1 | 3.3333 | 2 | |

0 | -32 | -11 | |

11 | 14 | 2 |

0.3333 | 0 | 0 | Row[1] | |

-4 | 1 | 0 | Row[2] | |

0 | 0 | 1 | Row[3] |

### New Row [3]

**Row[3] − 11 × Row[1]** (to give us 0 in the desired position):

11 − 11 × 1 = 0

14 − 11 × 3.3333 = -22.667

2 − 11 × 2 = -20

0 − 11 × 0.3333 = -3.6667

0 − 11 × 0 = 0

1 − 11 × 0 = 1

This gives us our new Row [3]:

1 | 3.3333 | 2 | |

0 | -32 | -11 | |

0 | -22.667 | -20 |

0.3333 | 0 | 0 | Row[1] | |

-4 | 1 | 0 | Row[2] | |

-3.6667 | 0 | 1 | Row[3] |

### New Row [2]

**Divide Row [2] by -32** (to give us a "1" in the desired position):

This gives us:

1 | 3.3333 | 2 | |

0 | 1 | 0.3438 | |

0 | -22.667 | -20 |

0.3333 | 0 | 0 | Row[1] | |

0.125 | -0.0313 | 0 | Row[2] | |

-3.6667 | 0 | 1 | Row[3] |

### New Row [1]

**Row[1] − 3.3333 × Row[2]** (to give us 0 in the desired position):

1 − 3.3333 × 0 = 1

3.3333 − 3.3333 × 1 = 0

2 − 3.3333 × 0.3438 = 0.8542

0.3333 − 3.3333 × 0.125 = -0.0833

0 − 3.3333 × -0.0313 = 0.1042

0 − 3.3333 × 0 = 0

This gives us our new Row [1]:

1 | 0 | 0.8542 | |

0 | 1 | 0.3438 | |

0 | -22.667 | -20 |

-0.0833 | 0.1042 | 0 | Row[1] | |

0.125 | -0.0313 | 0 | Row[2] | |

-3.6667 | 0 | 1 | Row[3] |

### New Row [3]

**Row[3] − -22.667 × Row[2]** (to give us 0 in the desired position):

0 − -22.667 × 0 = 0

-22.667 − -22.667 × 1 = 0

-20 − -22.667 × 0.3438 = -12.208

-3.6667 − -22.667 × 0.125 = -0.8333

0 − -22.667 × -0.0313 = -0.7083

1 − -22.667 × 0 = 1

This gives us our new Row [3]:

1 | 0 | 0.8542 | |

0 | 1 | 0.3438 | |

0 | 0 | -12.208 |

-0.0833 | 0.1042 | 0 | Row[1] | |

0.125 | -0.0313 | 0 | Row[2] | |

-0.8333 | -0.7083 | 1 | Row[3] |

### New Row [3]

**Divide Row [3] by -12.208** (to give us a "1" in the desired position):

This gives us:

1 | 0 | 0.8542 | |

0 | 1 | 0.3438 | |

0 | 0 | 1 |

-0.0833 | 0.1042 | 0 | Row[1] | |

0.125 | -0.0313 | 0 | Row[2] | |

0.0683 | 0.058 | -0.0819 | Row[3] |

### New Row [1]

**Row[1] − 0.8542 × Row[3]** (to give us 0 in the desired position):

1 − 0.8542 × 0 = 1

0 − 0.8542 × 0 = 0

0.8542 − 0.8542 × 1 = 0

-0.0833 − 0.8542 × 0.0683 = -0.1416

0.1042 − 0.8542 × 0.058 = 0.0546

0 − 0.8542 × -0.0819 = 0.07

This gives us our new Row [1]:

1 | 0 | 0 | |

0 | 1 | 0.3438 | |

0 | 0 | 1 |

-0.1416 | 0.0546 | 0.07 | Row[1] | |

0.125 | -0.0313 | 0 | Row[2] | |

0.0683 | 0.058 | -0.0819 | Row[3] |

### New Row [2]

**Row[2] − 0.3438 × Row[3]** (to give us 0 in the desired position):

0 − 0.3438 × 0 = 0

1 − 0.3438 × 0 = 1

0.3438 − 0.3438 × 1 = 0

0.125 − 0.3438 × 0.0683 = 0.1015

-0.0313 − 0.3438 × 0.058 = -0.0512

0 − 0.3438 × -0.0819 = 0.0282

This gives us our new Row [2]:

1 | 0 | 0 | |

0 | 1 | 0 | |

0 | 0 | 1 |

-0.1416 | 0.0546 | 0.07 | Row[1] | |

0.1015 | -0.0512 | 0.0282 | Row[2] | |

0.0683 | 0.058 | -0.0819 | Row[3] |

We have achieved our goal of producing the Identity matrix on the left. So we can conclude the inverse of the matrix *A* is the right hand portion of the augmented matrix:

A^{−1} = |
-0.1416 | 0.0546 | 0.07 | ||

0.1015 | -0.0512 | 0.0282 | |||

0.0683 | 0.058 | -0.0819 |

### Things to Note

- The above explanation shows all steps. A human can usually take a few shortcuts. Also, sometimes there is already a "1" or a "0" in the correct position, and in those cases, we would not need to do anything for that step.
- Always write down what you are doing in each step - it is very easy to get lost!
- I have shown results correct to 4 decimal place, but
**best possible accuracy**was used throughout. Be aware that small errors from rounding will accumulate throughout the problem. Always use full calculator accuracy! (Make full use of your calculator's memory.) - Very occasionally there are strange results because of the computer's internal representation of numbers. That is, it may store "1" as 0.999999999872.

### See another?

You can go back up to the top of the page and choose another example.