Python pour le calcul scientifique/Algèbre linéaire
Rappelons que dorénavant les programmes commencent tous par :
#!/usr/bin/python3
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 à utiliser[modifier | modifier le wikicode]
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éterminant[modifier | modifier le wikicode]
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éaire[modifier | modifier le wikicode]
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érences[modifier | modifier le wikicode]
- ↑ voir (en) « Computing norms », sur SciPy.org (consulté le 3 mai 2022).
Régression et optimisation < ↑ > Calcul différentiel et intégral