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. Modèle:Loupe
Modules à utiliser
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
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].
Si la matrice est un assemblage de vecteurs, alors on peut calculer la norme de chaque vecteur en indiquant le numéro de l'indice (l'axe) selon lequel on calcule la norme. Par exemple, si on a une matrice de vecteurs colonne M = [[X1, X2, …], [Y1, Y2, …]], alors linalg.norm(M, axis=0) va calculer la norme selon l'indice 0 (le numéro de ligne) : [|(X1, Y1)|, |(X2, Y2)|, …].
Le déterminant s'obtient avec
linalg.det(A)
Résolution d'un système linéaire
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
[[../Régression et optimisation|Régression et optimisation]] < [[../|↑]] > [[../Calcul différentiel et intégral|Calcul différentiel et intégral]]
- ↑ voir Modèle:Lien web.