Voor een reële, vierkante, symmetrische N×N matrix A kan steeds een orthonormale basis van eigenvectoren gevonden worden. Deze basis kan gevonden worden door in NumPy de eigenvectoren van de matrix A te bepalen. In deze opdracht zoeken we de ontbinding van een willekeurige kolomvector x (dimensie N×1) als lineaire combinatie van deze eigenvectoren, namelijk

x=i=0N1ciei

waarbij ei dus eigenvectoren van A voorstellen.
Merk op dat je de grootheden ci makkelijk kan vinden uit

xei=ci

vermits de vectoren ei onderling loodrecht op elkaar staan en lengte 1 hebben. Hierin staat xei voor het inwendig product van x en ei. Schrijf een functie ontbinding() met twee argumenten, namelijk:

Deze argumenten zijn 2-dimensionale NumPy-tabellen (dus van het type array). Het resultaat is een NumPy-rij (dus in 1 dimensie), die de gezochte ontbinding (dus de coëfficiënten ci in bovenstaande uitdrukking) van x voorstelt.

LET OP: je gebruikt hierbij de volgorde EN de basisvectoren zoals ze door de ingebouwde functies van NumPy gegenereerd worden.
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(ontbinding(A, x))
#[ 4.17551397 -2.63672248  2.34077227  0.36546242]