Python pour le calcul scientifique/Algèbre linéaire

Rappelons que dorénavant les programmes commencent tous par :

import numpy as np
import matplotlib.pyplot as plt

L'algèbre linéaire consiste essentiellement en la manipulation de matrices.

Pour plus de détails voir : Python pour le calcul scientifique/Manipulation de matrices.

Modules à utiliserModifier

Deux modules fournissent les fonctions utiles pour l'algèbre linéaire : numpy.linalg et scipy.linalg. Le module SciPy est plus complet et est parfois plus rapide que le module NumPy. Nous considérons donc que nous utilisons le premier et ajoutons en en-tête :

from scipy import linalg

Norme et déterminantModifier

La norme « classique » s'obtient par linalg.norm() ; pour les vecteurs, il s'agit de la norme d'ordre 2 (L2) et pour les matrice, la norme de Frobénius

A = np.array([[1,2],[3,4]])
linalg.norm(A) # 5.4772...

Pour les vecteurs, on peut utiliser une norme d'ordre n quelconque,   avec

linalg.norm(x, n)

Si n prend pour valeur inf, cela renvoie max(|xi|) ; pour valeur -inf, min(|xi|).

Pour une matrice, les valeurs d'ordre possibles sont ±1, ±2, ±inf et "fro" (pour Frobenius, valeur par défaut)[1].

Le déterminant s'obtient avec

linalg.det(A)

Résolution d'un système linéaireModifier

Un système linéaire d'équations peut se représenter par une équation matricielle :

 

avec

 

Si le système possède une solution, alors la matrice A est inversible et le résultat peut s'obtenir par :

 

En Python, cela peut s'obtenir de deux manières :

  • X = linalg.inv(A).dot(b) ;
  • X = linalg.solve(A, b) ;

la seconde méthode étant plus rapide.

Par exemple, pour résoudre le système

 
A = np.array([[1, 2], [3, 4]])
b = np.array([[5], [6]])
X = linalg.solve(A, b)
print(X)
# [[-4. ]
# [ 4.5]]

Notes et référencesModifier

  1. voir (en) « Computing norms », sur SciPy.org (consulté le 3 mai 2022).

Régression et optimisation < > Calcul différentiel et intégral