### 6.54.2 Réduction de Gauss d’une matrice : `ref`

`ref` permet de résoudre un système d’équations linéaires que l’on écrit sous forme matricielle :

`A*X=B`

Le paramètre de `ref` est la "matrice augmentée" du système (celle formée par la matrice `A` du système et ayant comme dernier vecteur colonne le second membre `B`).
Le résultat est une matrice `[A1,B1]` : `A1` a des zéros au dessous de sa diagonale et les solutions de :

`A1*X=B1`

sont les mêmes que celles de :

`A*X=B`

`ref` peut travailler dans ℤ/pℤ.
Par exemple, soit à résoudre le système dans ℝ et dans ℤ/5ℤ:

⎧
⎨
⎩

3x + y | = | −2
3x +2y | = | 2

On tape pour résoudre le système dans ℝ :

`ref([[3,1,-2],[3,2,2]])`

On obtient :

`[[1,1/3,-2/3],[0,1,4]]`

cela signifie donc que :
y=4 et x=−2 sont solutions du système. On tape pour résoudre le système dans ℤ/5ℤ :

`ref([[3,1,-2],[3,2,2]]%5)`

On obtient :

`[[1 % 5,2 % 5,1 % 5],[0 % 5,1 % 5,-1 % 5]]`

cela signifie donc que :
y=−1%5 et x=3%5 sont solutions du système.

Remarque
Lorsque le nombre de colonnes est égal au nombre de lignes +1 `ref` ne divise pas par le pivot de la derniere colonne, par exemple, on tape :

`ref([[1,1,0,0,-a1],[0,1,1,0,-a2],[0,0,1,1,-a3],[1,0,0,1,-a4]])`

On obtient :

`[[1,1,0,0,-a1],[0,1,1,0,-a2],[0,0,1,1,-a3],[0,0,0,0,a1-a2+a3-a4]]`

Ainsi on peut savoir que si `a1-a2+a3-a4` n’est pas nul, il n’y a pas de solution.