We noemen een kolomvector $$\mathbf{x}$$, verschillend van de nulvector, die voldoet aan
$$\mathbf{A x} = \lambda \mathbf{x}$$ een eigenvector van de reële matrix $$\mathbf{A}$$, met bijhorende eigenwaarde $$\lambda$$. Het vinden van alle
eigenvectoren en eigenwaarden van een matrix is vrij rekenintensief. Om echter de eigenvector te vinden
die hoort bij de grootste, positieve eigenwaarde van $$\mathbf{A}$$ kunnen we een eenvoudig iteratief schema gebruiken.
We construeren de rij van kolomvectoren $$\mathbf{x}$$, gegeven door
$$
\mathbf{x}_{n+1} = \frac{1}{||\mathbf{A} \mathbf{x}_n||} \mathbf{A} \mathbf{x}_n
$$
Hierin stelt $$||\mathbf{v}||$$ de norm van de vector $$\mathbf{v}$$ voor, gedefinieerd als de vierkantswortel uit de som van
de kwadraten van zijn componenten. Om de iteratie te starten, wordt een startvector $$\mathbf{x}_0$$ opgegeven.
Schrijf een functie grootste_eigenwaarde()
die van een gegeven reële matrix $$A$$ , met minstens één positieve
reële eigenwaarde, een eigenvector horend bij de grootste positieve eigenwaarde van $$\mathbf{A}$$ oplevert,
volgens de geschetste procedure.
De functie heeft drie argumenten, namelijk:
Een tuple bestaande uit een kolomvector en een reëel getal.
a = np.array([[ 0., 1., 2., 3.], [10., 11., 12., 13.], [20., 21., 22., 23.], [30., 31., 32., 33.]]) x0 = np.array([[1.], [1.], [1.], [1.]]) grootste_eigenwaarde(a, x0, 0.001) = (array([ 0.05415981, 0.29764915, 0.54113849, 0.78462783]), 68.93663131468722)