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:

Schrijf een functie 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

$$ || \mathbf{AX}-\mathbf{I} || < f. $$

Hier stelt $$||\cdot||$$ de norm van een reële matrix voor, gedefinieerd als de vierkantswortel van de som van de kwadraten van alle elementen van die matrix (de zogenaamde $$L_2$$-norm).

Argumenten

Een inverteerbare reële matrix, voorgesteld door een 2-dimensionale NumPy-tabel met $$M>0$$ rijen en $$M>0$$ kolommen, en de convergentieconstante $$f$$.

Resultaat

De inverse van deze NumPy-matrix (dus opnieuw een NumPy-tabel met $$M$$ rijen en $$M$$ kolommen).

Voorbeeld

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