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).

Herhaal voor m = 0 t.e.m. min(M-1,N-1)
    Bepaal m'
    Indien |a[m',m]| ≥ eps
        Wissel rijen m en m'
        Herhaal voor i = m+1 t.e.m. M-1
            Bepaal geschikte k-waarde
            Voer de elementaire rij-bewerkingen uit op rij i zodat a[i,m] = 0 wordt

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. ]]