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