====== Manipulations de matrices ======
Les matrices sont des tableaux de nombres à deux dimensions. On peut utiliser des listes de lignes, qui sont elles-mêmes des listes d'éléments de la ligne, pour représenter une matrice. On aura donc des listes de listes.
===== Produit matriciel à l'aide de listes =====
Le [[wp>fr:Produit_matriciel|produit matriciel]] de deux matrices A et B nécessite que le nombre de colonnes de la matrice A soit égal au nombre de lignes de la matrice B. Pour obtenir le produit qui sera une matrice comportant le même nombre de lignes que A et le même nombre de colonnes que B, on effectue pour chaque élément de la ligne i et de la colonne j le produit scalaire de la ligne i de A et de la colonne j de B. On utilise un indice k qui prendra autant de valeur qu'il y a de colonnes de la matrice A ou de lignes de la matrice B. Pour des matrices carrées de dimension n, le produit matriciel conduit à un algorithme de complexité égale à n³.
Exemple de programme Python :
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
Calcul matriciel : multiplication
Utilisation de listes de listes pour représenter les matrices
"""
mat1=[[7,9],
[2,-5],
[11,0],
[6,-7],
]
print(mat1) # pour visualiser la matrice mat1 de 4 lignes de 2 colonnes
mat2=[[1,3,5],
[2,4,6],
]
print(mat2) # pour visualiser la matrice mat2 de 2 lignes de 3 colonnes
if len(mat1[0]) == len(mat2): # Les matrices sont compatibles
mprod=[] # initialisation de la matrice produit
for i in range(len(mat1)):
li = [] # initialisation d'une ligne
for j in range(len(mat2[0])):
elem = 0 # initialisation d'un élément au sein de la ligne
for k in range(len(mat1[0])):
elem = elem + mat1[i][k] * mat2[k][j]
li.append(elem)
mprod.append(li)
print(mprod) # pour visualiser la matrice produit
===== Utiliser NumPy =====
La librairie [[[[numpy_simple|Numpy]] permet d'effectuer efficacement de nombreux calculs matriciels. Voici la même multiplication que l'exemple précédent, en utilisant cette fois NumPy :
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
Calcul matriciel : multiplication
Utilisation de numpy (array,...) pour représenter les matrices et effectuer
les calculs d'algèbre linéaire
"""
import numpy as np
mat1 = np.array([[7,9],[2,-5],[11,0],[6,-7]])
print(mat1) # pour visualiser la matrice mat1 de 4 lignes de 2 colonnes
mat2=np.array([[1,3,5],[2,4,6]])
print(mat2) # pour visualiser la matrice mat2 de 2 lignes de 3 colonnes
print(np.dot(mat1,mat2)) # pour visualiser la matrice produit