Voor een reële, vierkante, symmetrische $$N \times N$$ matrix $$\mathbf{A}$$ kan steeds
een orthonormale basis van eigenvectoren gevonden worden. Deze basis kan gevonden worden door
in NumPy de eigenvectoren van de matrix $$\mathbf{A}$$ te bepalen. In deze opdracht
zoeken we de ontbinding van een willekeurige kolomvector $$\mathbf{x}$$ (dimensie $$N \times 1$$)
als lineaire combinatie van deze eigenvectoren, namelijk
$$
\vec{x} = \sum_{i = 0}^{N - 1} c_i \vec{e_i}
$$
waarbij $$\vec{e_i}$$ dus eigenvectoren van $$\mathbf{A}$$ voorstellen.
Merk op dat je de grootheden $$c_i$$ makkelijk kan vinden uit
$$
\vec{x} \cdot \vec{e_i} = c_i
$$
vermits de vectoren $$\vec{e_i}$$ onderling loodrecht op elkaar staan en lengte 1 hebben. Hierin
staat $$\vec{x} \cdot \vec{e_i} $$ voor het inwendig product van $$\vec{x}$$ en $$\vec{e_i}$$.
Schrijf een functie ontbinding()
met twee argumenten, namelijk:
np.linalg
.
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(ontbinding(A, x)) #[ 4.17551397 -2.63672248 2.34077227 0.36546242]