Om een reële $$M \times M$$ matrix $$\mathbf{A}$$ te inverteren, construeren we de rij van
$$M \times M$$ matrices gegeven door:
$$
\mathbf{X}_{n+1}=\mathbf{X}_n(2\mathbf{I}-\mathbf{AX}_n)
$$
Hierin stelt $$\mathbf{I}$$ de $$M \times M$$ eenheidsmatrix voor. Het is gemakkelijk in te zien
dat indien $$\mathbf{X}_n=\mathbf{A}^{-1}$$, $$\mathbf{X}_{n+1}$$ gelijk blijft aan $$\mathbf{X}_n$$
(en dus gelijk aan $$\mathbf{A}^{-1}$$). Om deze rij van $$\mathbf{X}$$-matrices te laten convergeren,
moeten we een goede startmatrix ($$\mathbf{X}_0$$) kiezen. Een goede keuze hiervoor is
$$
\mathbf{X}_0=\lambda \mathbf{A}^T
$$
waarin $$\mathbf{A}^T$$ de getransponeerde matrix van $$\mathbf{A}$$ voorstelt. Om $$\lambda$$ te bepalen
gaan we als volgt tewerk:
inverteer_iteratief()
die van een gegeven reële, inverteerbare matrix
$$\mathbf{A}$$ de inverse berekent volgens bovenstaande procedure. Je mag aannemen dat de argumentmatrix
inderdaad reëeel en inverteerbaar is, en deze argumentmatrix wordt voorgesteld door een 2-dimensionale NumPy-tabel. De functie levert als resultaat de gezochte inverse van $$\mathbf{A}$$.
Naast de te inverteren matrix, heeft de functie een tweede argument $$f$$, een strikt postief reëeel getal.
Dit getal bepaalt wanneer de iteratie stopt. We stoppen de iteratie zodra geldt dat Een inverteerbare reële matrix, voorgesteld door een 2-dimensionale NumPy-tabel met $$M>0$$ rijen en $$M>0$$ kolommen, en de convergentieconstante $$f$$.
De inverse van deze NumPy-matrix (dus opnieuw een NumPy-tabel met $$M$$ rijen en $$M$$ kolommen).
a = np.array([[ 0., 1., 2., 3.], [-10., -17., -19., -15.], [25., 31., 9., 12.], [-7., -9., 12., 3.]]) inverteer_iteratief(a, 0.01) = [[ 0.39454263 0.33594475 0.25197964 0.27717953] [-0.50134341 -0.30831455 -0.19554483 -0.25795858] [-0.32512356 -0.07313495 -0.01914741 0.03607975] [ 0.71700177 0.15143906 0.07788963 0.06187132]]