Gegeven een NumPy
-tabel a
die 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:
a
eps
, een reëel getal, met defaultwaarde 1E-10
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. ]]