Table des matières

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

matrices_multiplication-list.py
#! /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 permet d'effectuer efficacement de nombreux calculs matriciels. Voici la même multiplication que l'exemple précédent, en utilisant cette fois NumPy :

matrices_multiplication-numpy.py
#! /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