objectif
Décomposer une matrice: valeurs/vecteurs propres et SVD.
code minimal
import numpy as np
A = np.array([[3.,1.],[0.,2.]])
w, V = np.linalg.eig(A)
U, s, Vt = np.linalg.svd(A)
print(len(w), len(s))
utilisation
import numpy as np
A = np.array([[1.,2.],[3.,4.]])
print(np.allclose(A, (U:=np.linalg.svd(A))[0] @ np.diag(U[1]) @ U[2]))
variante(s) utile(s)
import numpy as np
A = np.array([[2.,0.],[0.,1.]])
print(np.linalg.eigvals(A).tolist())
notes
- SVD stable numériquement; eig pour matrices diagonalisables.