Exercice 56 / 100

NumPy — Algèbre linéaire

Utilise 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.

Produit matriciel vs multiplication element-wise

Ne pas confondre

A * B → element-wise (chaque case × chaque case) A @ B → produit matriciel (au sens mathématique) np.dot(A, B) → équivalent à @ np.matmul(A, B) → équivalent à @

Pour le produit matriciel, les dimensions doivent matcher : (m, k) @ (k, n) → (m, n). Sinon erreur.

Le produit matriciel fait se rencontrer une ligne de A et une colonne de B : leurs produits terme à terme, additionnés, donnent une seule case du résultat

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]]

Fonctions de np.linalg

np.linalg.det(A) déterminant np.linalg.inv(A) inverse (seulement si det ≠ 0) np.linalg.matrix_rank(A) rang np.linalg.eig(A) valeurs et vecteurs propres np.linalg.solve(A, b) résout Ax = b (plus stable que inv(A) @ b) np.linalg.norm(v) norme (longueur d'un vecteur)

Valeurs et vecteurs propres

vals, vecs = np.linalg.eig(A)
vals → vecteur des valeurs propres vecs → matrice dont chaque COLONNE est un vecteur propre

Exemple complet

A = 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.0 print('Inverse A:\n', np.linalg.inv(A)) vals, _ = np.linalg.eig(A) print('Valeurs propres:', vals)

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.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →