#
**Gaël**
| **Ga**uss **El**imination

An educational tool for experimenting with matrices and the Gauss method:

① Edit or generate a random matrix.
② Operate by clicking cells.
③ Have fun!

JavaScript seems to be disabled.

Your Operations: None.

## Matrix data of your operations

We have S A T = B, where A is the initial matrix and B is the current matrix.

Row operations 0.

Col operations 0.

## As a reminder, here is the initial matrix.

## The matrix S accumulates all row operations, acting on A from the left.

## The inverse matrix S^{-1} is obtained by inverting all row operations.

## The matrix T accumulates all column operations, acting on A from the right.

## The inverse matrix T^{-1} is obtained by inverting all column operations.

## Gaël version 0.4 – Instructions

Copyright © 2020 Michael Eisermann, Institut für Geometrie und Topologie (IGT), Universität Stuttgart. You may use my work under the conditions of the Creative Commons Attribution-NonCommercial-ShareAlike License (CC BY-NC-SA 4.0). This interactive calculation tool is purely educational and not intended for any other purpose. It uses JavaScript with native BigInt as provided by your browser.

**What is going on here?**
Gaussian elimination is an algorithm for solving systems of linear equations over a field.
It proceeds by a sequence of elementary operations performed
on the rows or columns of the corresponding matrix of coefficients.
This method can also be used to find the rank of a matrix,
to calculate the determinant of a matrix,
and to calculate the inverse of an invertible square matrix.
The method is named after Carl Friedrich Gauss (1777–1855).
The Gaël webpage does the arithmetic and bookkeeping of coefficients for you,
so you can focus on learning matrix operations and easily experiment with them.

**What do the buttons do?**
The buttons are intended to be self-explaining.
*Edit/Resume* [Enter]: Edit the size and the coefficients of the matrix.
The global denominator in the top left corner applies to all entries in the matrix.
*Random* [alt+r]: Randomly set a key and generate the matrix from it.
*Generate* [alt+g]: Generate the matrix from the given key for reproducible randomness.
*Clear* [alt+c]: Clear the matrix while keeping its size.
*Reset*: Reset all data, including the size and the history.
*History* [alt+f/p/n/l]: Navigate the archive; first/previous/next/last.
Your browser console [ctrl+shift+i] shows a detailed log of all operations;
press [alt+c] to clear the console.
Press [alt+w] to toggle the display style between standard and wide.

**How do I manipulate a matrix?**
Right click on the matrix edits the cell in focus.
Left click triggers a specific action according to the cell position.
*Click top left*: Transpose the matrix.
*Click on coefficient* (inner cell):
mark this cell as source or target as follows.

**How do row and column operations work?**
Row operations:
Mark positions *(i,0)* and *(j,0)* to permute rows *i* and *j*.
Mark positions *(i,j)* and *(i,0)* to normalize coefficient *(i,j)* by scaling row *i*.
Mark positions *(i,k)* and *(j,k)* in the same column *k*
to add a multiple of row *i* to row *j* in order to kill coefficient *(j,k)*.

Column operations:
Mark positions *(0,i)* and *(0,j)* to permute columns *i* and *j*.
Mark positions *(i,j)* and *(0,j)* to normalize coefficient *(i,j)* by scaling column *j*.
Mark positions *(k,i)* and *(k,j)* in the same row *k*
to add a multiple of column *i* to column *j* in order to kill coefficient *(k,j)*.
Try it for yourself! It is easier done than said.

**What is additive mode?**
This is still experimental. In additive mode you operate
by negation and addition only, so you work over the integers,
acting by \(\GL_m\Z\) from the left with row operations
and by \(\GL_n\Z\) from the right with columns operations.
This can be useful to create exercises with matrices having certain properties:
Start with your desired result, say in reduced row echelon form,
and scramble the matrix by some additive operations.

**Support?**
The Gaël webpage aims to be playful and helpful at the same time.
It is far from perfect, so your support
and constructive criticism are always very welcome.
My current wish list includes:
(0) Review and optimize the existing code.
(1) Make the webpage as user friendly as possible.
(2) Add constructors for special matrices: Hilbert, Vandermonde, tridiagonal, etc...
You can help by improving and extending the existing JavaScript code!

Counting 4765 page hits since 2020-11-01.