ConsigneUtilise np.linalg pour le produit matriciel, le déterminant et l'inverse
np.linalg fournit les opérations d'algèbre linéaire essentielles : produit matriciel, déterminant, inverse, valeurs propres, etc.
Ne pas confondre
A * B → element-wise (chaque case × chaque case)A @ B → produit matriciel (au sens mathématique)np.dot(A, B) → équivalent à @ en 1D et 2D seulement (au-delà, il calcule autre chose)np.matmul(A, B) → équivalent à @ (c'est exactement la même opération)Pour le produit matriciel, les dimensions doivent matcher : (m, k) @ (k, n) → (m, n). Sinon erreur.
Exemple
A = np.array([[1, 2], [3, 4]]) # (2, 2)B = np.array([[5, 6], [7, 8]]) # (2, 2)A @ B → [[19 22] [43 50]]A * B → [[ 5 12] [21 32]]np.linalg.det(A) déterminantnp.linalg.inv(A) inverse (seulement si det ≠ 0)np.linalg.matrix_rank(A) rangnp.linalg.eig(A) valeurs et vecteurs propresnp.linalg.solve(A, b) résout Ax = b (plus stable que inv(A) @ b)np.linalg.norm(v) norme (longueur d'un vecteur)vals, vecs = np.linalg.eig(A)vals → vecteur des valeurs propresvecs → matrice dont chaque COLONNE est un vecteur propreA = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])print('Produit:\n', np.dot(A, B))print('Déterminant A:', np.linalg.det(A)) # -2.0000000000000004, pas -2.0print('Inverse A:\n', np.linalg.inv(A))vals, _ = np.linalg.eig(A)print('Valeurs propres:', vals)det passe par un calcul en nombres flottants : il affiche -2.0000000000000004 et non -2.0. Ne teste donc jamais un déterminant avec == 0, compare plutôt abs(det) à un très petit seuil.
Pour résoudre un système linéaire Ax = b, préfère np.linalg.solve(A, b) à np.linalg.inv(A) @ b : plus rapide, plus stable numériquement.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →