Tutoriel Python : calculs matriciels

Table des matières

Introduction

  1. Les matrices en Python

1.1. Définition générale d’une matrice

1.2. Comment créer une matrice avec Python ?

  1. Effectuer l’addition de matrices

2.1. Méthode traditionnelle

2.2. En utilisant l’opérateur « + »

  1. Soustraction de matrices
  2. Division de matrices
  3. La Transposée d’une matrice
  4. La multiplication de matrices

6.1. Produit scalaire

6.2. Produit matriciel

6.3. Méthode matmul()

  1. Inverse d’une matrice
  2. Exposant d’une matrice
  3. Exercices

9.1. Exercice 1

9.2. Exercice 2

9.3. Exercice 3

  1. Solution des exercices

10.1. Exercice 1

10.2. Exercice 2

10.3. Exercice 3

Conclusion

Introduction

Bienvenue dans un nouveau tutoriel Python, aujourd’hui nous allons découvrir une nouvelle notion qui est essentielle à tout type de programme, il s’agit du calcul matriciel. Python a plusieurs méthodes de manipulation des matrices allant des plus simples comme l’addition, la soustraction et la multiplication jusqu’aux opérations les plus complexes.

À la fin de ce tutoriel, vous serez capable de maitriser les matrices et accéder à leurs éléments ainsi que

faire des opérations sur ce type de donnée. Vous n’avez besoin d’aucun prérequis pour ce tutoriel, mais bien sûr avoir des connaissances basiques des matrices est essentiel.

1. Les matrices en Python 

1.1. Définition générale d’une matrice

Une matrice est une structure de données bidimensionnelle où les nombres sont disposés en rangées en colonnes. Par exemple :

  A= 

A est une matrice 3x3 car elle contient 3 lignes et 3 colonnes.

1.2. Comment créer une matrice avec Python ?

Il existe plusieurs façons de créer une matrice en Python, soit à partir d’un tableau ou par le moyen d’une liste.

1.2.1. Création d’une matrice en utilisant une liste

La fonction numpy.array() peut être utilisée dans la création de matrices à partir d’une liste .

Exemple :

Syntaxe :

import numpy
matrice= numpy.array([[ 1, 2, 3],[ 4, 5, 6]])
print (matrice)

Résultat de l’exécution :

1.2.2. Création d’une matrice en utilisant numpy.matrix()

La fonction numpy.matrix() nous permet de créer une matrice en Python.

Syntaxe générale :

Numpy.matrix(input,dtype)

Avec les paramètres suivants :

  • Input : les éléments d’entrée pour former une matrice.
  • Dtype : le type de données correspondant à la sortie.

Exemple :

Dans cet exemple, vous allez découvrir deux manières différentes de créer des matrices en utilisant la fonction matrix() du module numpy .

Syntaxe :

import numpy as np
matriceA = np.matrix([[1, 2], [3, 4]])
print('MatriceA:\n', matriceA)
matriceB = np.matrix('[1,2;3,4]', dtype=np.int32) # Setting the data-type to int
print('\nMatriceB:\n', matriceB)

Résultat de l’exécution :

1.2.3. Création d’une matrice en utilisant la fonction numpy.arrange() 

Nous allons voir comment créer une matrice à l’aide de la fonction arrange () du module numpy .

Exemple :

Dans cet exemple, on veut créer une matrice où les valeurs de la première ligne sont comprises entre 1 et 5 et les valeurs de la deuxième ligne sont comprises entre 5 et 10 .

Syntaxe :

import numpy
print(numpy.array([numpy.arange(1,5), numpy.arange(5,10)]))
print('\nMatriceB:\n', matriceB)

Résultat de l’exécution :

2. Effectuer l’addition de matrices

L’opération d’addition sur matrices peut être effectuée de deux manières différentes :

  • Méthode traditionnelle.
  • En utilisant l’opérateur « + »

2.1. Méthode traditionnelle

Dans cette méthode traditionnelle, nous prenons essentiellement l’entrée de l’utilisateur, puis nous effectuons l’opération d’addition en utilisant l’opérateur for  (pour parcourir les éléments de la matrice) et ‘+’.

Exemple :

Syntaxe :

import numpy as np
array_1 = np.matrix([[1, 2], [3, 4]])
array_2 = np.matrix([[5, 6], [7, 8]])
resultat = np.matrix(p.zeros((2,2)))
print('Matrice array_1 :\n', array_1)
print('\nMatrice array_2 :\n', array_2)
for x in range(array_1.shape[1]):
for y in range(array_2.shape[0]):
resultat[x, y] = array_1[x, y] + array_2[x, y]
print('\nResult :\n', resultat)
print('\nMatriceB:\n', matriceB)

Résultat de l’exécution :

2.2. En utilisant l’opérateur « + » 

Cette méthode offre une meilleure efficacité au code car elle réduit le nombre de lignes de code et l’optimise également.

Exemple :

Syntaxe :

import numpy as np
array_1 = np.matrix([[1, 22], [33, 4]])
array_2 = np.matrix ([[55, 6], [7, 88]])
resultat = np.matrix (np.zeros((2,2)))
print('Matrix ar1 :\n', array_1)
print ('\nMatrix ar2 :\n', array_2)
resultat = array_1 + array_2 # using '+' operator
print('\nResult :\n', resultat)
print('\nMatriceB:\n', matriceB)

Résultat de l’exécution :

Exemple :

Voici un exemple qui utilise les deux méthodes et retourne le même résultat.

Syntaxe :

import numpy as np
# crée deux matrices 2x2
MatriceA= np.matrix([[10, 2], [30, 4]])
MatriceB = np.matrix([[5, 6], [7, 8]])
resultat = np.matrix(np.zeros((2,2))) # matrice de résultat d'addition
print('A matrix :\n', MatriceA)
print('\nB matrix :\n', MatriceB)
# méthode traditionnelle
for i in range(MatriceA.shape[1]):
for j in range(MatriceA.shape[0]):
resultat[i, j] = MatriceA[i, j] + MatriceB[i, j]
print ('\nRésultat calculé manuellement : \n', resultat)
# méthode en utilisant l'opérateur +
resultatB = MatriceA + MatriceB
print ('\nRésultat calculé en utilisant opérateur + :\n', resultatB)

Résultat de l’exécution :

3. Soustraction de matrices

L’opérateur ‘-‘ est utilisé pour effectuer une soustraction sur les éléments des matrices.

Exemple :

Voici un exemple simple de soustraction de deux matrices.

Syntaxe :

import numpy as np
Matrix_A = np.matrix([[11, 2], [33, 4]])
Matrix_B = np.matrix([[2,2], [2,2]])
print ("Matrice A:\n", Matrix_A)
print ("Matrice B:\n", Matrix_B)
print ("Le résultat de la soustraction de la matrice A et B est \n",(Matrix_A - Matrix_B))

 Résultat de l’exécution :

4. Division de matrices

La division scalaire peut être effectuée sur les éléments de la matrice en Python à l’aide de l’opérateur ‘/’. L’opérateur “/” divise chaque élément de la matrice avec une valeur scalaire/constante.

Exemple :

Voici un exemple simple de la division scalaire.

Syntaxe :

import numpy as np
matrice_B = np.matrix([[4,2], [2,6]])
print("Matrice B:\n", matrice_B)
print("Matrice B après une opération de division scalaire :\n",(matrice_B/2))

Résultat de l’exécution :

5. La Transposée d’une matrice

La transposition d’une matrice implique essentiellement le retournement de la matrice sur les diagonales correspondantes, c.-à-d. qu’elle échange les lignes et les colonnes de la matrice d’entrée. Les lignes deviennent les colonnes et vice-versa.??Par exemple : Considérons une matrice A avec des dimensions 3 2 i.e 3 lignes et 2 colonnes. Après avoir effectué l’opération de transposition, les dimensions de la matrice A seraient 2 3 i.e 2 lignes et 3 colonnes.??Matrix. T effectue essentiellement la transposition de la matrice d’entrée et produis une nouvelle matrice à la suite de l’opération de transposition.

Exemple :

Syntaxe : 

import numpy
matrice_A = numpy.array([numpy.arange(10,15), numpy.arange(15,20)])
print("Matrice originale A:\n")
print(matA)
print('\n Dimension de la matrice A: ',matA.shape)
print("\nTransposé de la matrice A:\n ")
resultat = matrice_A.T
print(resultat)
print('\nDimensions de la matrice A aprés la transposée : ',resultat.shape)

Résultat de l’exécution :

6. La multiplication de matrices

La multiplication de matrices en Python peut se faire de deux manières différentes :

  • produit scalaire
  • produit matriciel
  • méthode matmul ()

6.1. Produit scalaire 

Quand il s’agit de produit scalaire, une valeur/scalaire est multipliée par chaque élément de la matrice.

L’opérateur * est utilisé pour multiplier la valeur du scalaire avec les éléments de la matrice d’entrée.

Exemple :

Voici un exemple simple de la multiplication des éléments d’une matrice par un scalaire.

Syntaxe :

import numpy as np
matrice_A = np.matrix([[11, 22], [33, 44]])
print ("Matrice A:\n", matrice_A)
print("Produit scalaire de la matrice A:\n", matrice_A * 10)

Résultat de l’exécution :

6.2. Produit matriciel

Comme mentionné ci-dessus, nous pouvons utiliser l’opérateur ‘*’ uniquement pour la multiplication scalaire. Pour aller de l’avant avec la multiplication matricielle, nous devons utiliser la fonction numpy.dot ().

La fonction numpy.dot() prend les tableaux NumPy comme valeurs de paramètre et effectue la multiplication selon les règles de base de la multiplication matricielle.

Exemple :

Syntaxe :

import numpy as np
matrice_A = np.matrix ([[11, 22], [33, 44]])
matrice_B = np.matrix ([[2,2], [2,2]])
print("Matrice A:\n", matrice_A)
print ("Matrice B:\n", matrice_B)
print ("Produit matricielle de la Matrice A et la Matrice B \n", np.dot (matrice_A, matrice_B))

Résultat de l’exécution :

6.3. Méthode matmul()

La méthode numpy.matmul() exécute le produit de matrice sur les matrices d’entrée.

Exemple :

Voici un exemple simple de la multiplication de deux matrices en utilisant la méthode matmul().

Syntaxe :

import numpy as np
matrice_A = np.matrix([[10, 20], [30, 40]])
print('Matrice A:\n', matrice_A)
matrice_B = np.matrix('[10,20;30,40]', dtype=p.int32) # configure le dtype sur int
print('\nMatrice B:\n', matrice_B)
print ("La multiplication des deux matrices utilisant la méthode matmul()")
resultat = np.matmul(matrice_A,matrice_B)
print (resultat)

Résultat de l’exécution :

7. Inverse d’une matrice

L’inverse d’une matrice est juste la réciproque de la matrice comme nous le faisons dans l’arithmétique normale pour un nombre simple qui est utilisé pour résoudre les équations afin de trouver la valeur des variables inconnues. L’inverse d’une matrice est cette matrice qui, multipliée avec la matrice originale, donnera une matrice d’identité. L’inverse d’une matrice n’existe que si la matrice est non singulaire c’est-à-dire que le déterminant ne doit pas être 0. En utilisant le déterminant et l’adjoint, on peut facilement trouver l’inverse d’une matrice carrée en utilisant la formule ci-dessous :

if determinant(A) != 0
A-1 = adjoint(A)/determinant(A)
else
"L’inverse de la matrice n’existe pas"

Exemple :

Dans cet exemple, on va calculer l’inverse d’une matrice 3*3 en utilisant la fonction inv() .

Syntaxe :

# Pogramme Python pour calculer l'inverse d'une matrice
# en utilisant numpy
# Importer le package requis
import numpy as np
# On prend une matrice 3*3
A = np.array([[6, 1, 1],
[4, -2, 5],
[2, 8, 7]])
# On calcule l'inverse de la matrice
print (np.linalg.inv(A))

 Résultat de l’exécution :

Exemple :

Un autre exemple de calcul de l’inverse d’une matrice.

Syntaxe :

# Pogramme Python pour calculer l'inverse d'une matrice
# en utilisant numpy
# Importer le package requis
import numpy as np
# On prend une matrice 4*4
A = np.array ([[4, 1, 1, 3],
[4, -2, 6, 1],
[2, 8, 7, 6],
[3, 1, 9, 7]])
# On calcule l'inverse de la matrice
print (np.linalg.inv(A))

Résultat de l’exécution :

Exemple :

Dans cet exemple, on va calculer l’inverse de deux matrices en même temps.

Syntaxe :

# Pogramme Python pour calculer l'inverse d'une matrice
# en utilisant numpy
# Importer le package requis
import numpy as np
# l’inverse de plusieurs matrices peut être
# calculé en une seule fois
A = np.array ([[[10. 2.], [3., 4.]],
[[1, 3], [30, 5]]])
# Calcul l'inverse de la matrice
print (np.linalg.inv(A))

Résultat de l’exécution :

8. Exposant d’une matrice

L’exposant d’une matrice est calculé par élément, c.-à-d. que l’exposant de chaque élément est calculé en élevant l’élément à la puissance d’une valeur scalaire/constante d’entrée.

Exemple :

Syntaxe :

import numpy
matrice_A = numpy.array ([numpy.arange(0,2), numpy.arange(2,4)])
print ("Matrice originale A:\n")
print (matrice_A)
print ("Exposant de la matrice A:\n")
print (matrice_A ** 2) # trouve l'exposant de chaque élément de la matrice

Résultat de l’exécution :

9. Exercices

9.1. Exercice 1

Écrivez un code qui vous permet de faire les trois opérations suivantes sur deux matrices :

L’addition – la soustraction ainsi que la division. N’oubliez pas d’initialiser les deux matrices de votre choix !

9.2. Exercice 2

Même concept que le premier exercice, mais ici vous devez utiliser les deux fonctions multiply() et dot() pour la multiplication de deux matrices .

9.3. Exercice 3

Écrivez un code qui permet de faire la soustraction, l’addition, la division , le produit de deux matrices , la racine des éléments d’une matrice , la somme des colonnes , la somme des lignes et la transposée d’une matrice . Initialisez deux matrices de votre choix.

10. Solution des exercices

10.1. Exercice 1

Syntaxe :

# Code Python pour réaliser les opérations
# add(), subtract() and divide() sur les matrices
# On importe le package numpy pour les opérations sur les matrices
import numpy
# On initialise les deux matrices
Matrice_1 = numpy.array([[1, 2], [4, 5]])
Matrice_2 = numpy.array([[7, 8], [9, 10]])
# On utilise la méthode add() pour faire l'addition
print (" l'addition des deux matrices retourne : ")
print (numpy.add(Matrice_1,Matrice_2))
# On utilise la fonction subtract() to subtract matrices
print ("La soustraction des elements de deux matrices retourne : ")
print (numpy.subtract(Matrice_1,Matrice_2))
# fonction divide() pour diviser les deux matrices
print ("La division des élémets des deux matrices retourne : ")
print (numpy.divide(Matrice_1,Matrice_2))

Résultat de l’Exécution :

10.2. Exercice 2

Syntaxe :

# Code Python pour réaliser les opérations
# multiply() et dot() sur les matrices
# on importe le package numpy pour les opérations
import numpy
# Initialisation de matrices
Matrice_1 = numpy.array ([[1, 2], [4, 5]])
Matrice_2 = numpy.array ([[7, 8], [9, 10]])
# On utilise mutiply() pour le produit d'éléments de matrice
print ("Le produit par éléments des deux matrices est : ")
print (numpy.multiply(Matrice_1,Matrice_2))
# dot() pour le produit matriciel
print ("Le produit matriciel des deux matrices est : ")
print (numpy.dot(Matrice_1,Matrice_2))

Résultat de l’exécution :

10.3. Exercice 3

Syntaxe :

import numpy
#Initialisation des deux matrices
Matrice_1 = numpy.array([[1, 2], [4, 5]])
Matrice_2 = numpy.array([[7, 8], [9, 10]])
# add() est utilisé pour additioner deux matrices
print ("Addition de deux matrices: ")
print (numpy.add(Matrice_1,Matrice_2))
# subtract() est utilisé pour soustraire deux matrices
print ("Soustraction de deuxmatrices : ")
print (numpy.subtract(Matrice_1,Matrice_2))
# divide() est utilisé pour diviser deux matrices
print ("Division des matrices : ")
print (numpy.divide(Matrice_1,Matrice_2))
print ("Multiplication de deux matrices: ")
print (numpy.multiply(Matrice_1,Matrice_2))
print ("Le produit de deux matrices: ")
print (numpy.dot(Matrice_1,Matrice_2))
print ("racine d'une matrice : ")
print (numpy.sqrt(Matrice_1))
print ("La somme des éléments d'une matrice : ")
print (numpy.sum(Matrice_2))
print ("Somme des éléments d'une colonne : ")
print (numpy.sum(Matrice_2,axis=0))
print ("Somme des éléments d'une ligne: ")
print (numpy.sum(Matrice_2,axis=1))
# using "T" to transpose the matrix
print ("Transposée d'une matrice : ")
print (Matrice_1.T)

Résultat de l’exécution :

  

Conclusion :

Nous sommes arrivés à la fin de ce tutoriel, maintenant vous connaissez les opérations de base de matrices en Python comme l’addition, la soustraction, la multiplication… Par ailleurs, il existe encore plusieurs fonctions de manipulation de matrices que nous allons découvrir dans un prochain tutoriel !

Article publié le 21 Novembre 2020par Mouna HAMIM