We wensen voor een reële vierkante matrix $$\mathbf{A}$$ en een kolomvector $$\mathbf{x}$$ het product $$ \mathbf{A}^n \mathbf{x} $$ te bepalen, waarbij $$n$$ geheel en potentieel groot is. Om het het expliciet berekenen van $$\mathbf{A}^n$$ te vermijden, bepalen we de in absolute waarde grootste eigenwaarde $$\lambda$$ van $$\mathbf{A}$$ met bijhorende eigenvector $$\mathbf{e}$$ (een kolomvector).
Het gezochte product benaderen we dan als:
$$ \mathbf{A}^n \mathbf{x} \approx \lambda^n (\mathbf{x} \cdot \mathbf{e}) \mathbf{e} $$
waarbij $$\mathbf{x} \cdot \mathbf{e}$$ het inwendig product voorstelt van de kolomvectoren $$\mathbf{x}$$ en $$\mathbf{e}$$. Schrijf een functie product() met drie argumenten, namelijk:

Deze eerste 2 argumenten zijn 2-dimensionale NumPy-tabellen (dus van het type array). Het resultaat is een 1-dimensionale NumPy-rij (van het type array, met $$N$$ elementen).

TIP: maak voor deze oefening o.a. gebruik van de functies uit de module np.linalg.

Voorbeeld

A = np.array([[  0.,   0.,   5.,  -2.],
 [  0.,  -4.,   7.,   4.],
 [  5.,   7.,  18.,   3.],
 [ -2.,   4.,   3.,   0.]])
x = np.array([[1.], [2.], [3.], [4.]])
print(product(A, x, 5))
#[  3982310.90573096   5561119.28836325  18566138.61374113
   3226219.81084703]