Gegeven een NumPy-tabel adie een matrix voorstelt met $$M$$ rijen. Gevraagd wordt om een rij-echelongedaante te realiseren, via onderstaand algoritme (Gauss-eliminatie met pivoteren).

M = aantal rijen van A
N = aantal kolommen van A

i = 0
Herhaal voor j=0 t.e.m. N-1:
    Indien i < M:
        Zoek rij-index p≥i waarvoor |A(p, j)| maximaal is
        Indien p verschillend van i:
            Wissel rijen p en i in A
        Indien A(i, j) verschillend van 0:
            Maak kolom j vanaf rij i+1 gelijk aan 0 
                        via elementaire rij-bewerkingen
            Incrementeer i

Programmeer hiertoe de functie echelon() met als argumenten:

Het resultaat is de echelon-gedaante die je krijgt door toepassing van bovenstaand algoritme.

Voorbeeld

a = np.array([[1, 2, 3, 4], [10, 9, 8, 7], [2, 4, 5, 8], [-1, 3, 5, 7]], dtype = float)
print(echelon(a))

#[[10.          9.          8.          7.        ]
# [ 0.          3.9         5.8         7.7       ]
# [ 0.          0.          0.56410256  1.12820513]
# [ 0.          0.          0.          2.        ]]

a = np.array([[1, 2, 3, 4], [0, 0, 0, 0], [2, 4, 5, 8], [-1, 3, 5, 7]], dtype = float)
print(echelon(a))

#[[ 2.   4.   5.   8. ]
# [ 0.   5.   7.5 11. ]
# [ 0.   0.   0.5  0. ]
# [ 0.   0.   0.   0. ]]