teaching:progappchim:matrices

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.

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

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
Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus
  • teaching/progappchim/matrices.txt
  • Dernière modification : 2018/03/06 14:49
  • de villersd