← retour aux snippets

numpy: eig et SVD

Décomposer une matrice: valeurs/vecteurs propres et SVD.

python numpy #numpy#linalg#svd

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.