CHAPITRE 3 : IMPLÉMENTATION DES CALCULS MATRICIELLES SOUS PYTHON
En programmation, l’implémentation fait référence à la façon dont une idée, une fonctionnalité, un
algorithme ou une solution est mise en œuvre en utilisant un langage de programmation.
Dans notre travail, nous avons opté pour le langage Python qui est un langage bien adapté par sa
puissance, sa polyvalence et sa grande bibliothèque.
3.1 Rapide historique de python
Python est un langage de programmation interprété, polyvalent et orienté objet, créé par Guido van
Rossum en 1989 et publié pour la première fois en 1991. Le programme orienté objet tente de
modéliser le monde réel grâce à l’utilisation d’objets qui combinent les méthodes et les données.
(https://www.sciencedirect.com/topics/computer-science/object-oriented-languages )
De 1989-1991, Guido van Rossum travaillait au Centre de mathématiques et d’informatique (CWI)
aux Pays-Bas. Il cherchait un langage simple et intuitif, mais puissant, pour écrire des scripts tout en
facilitant le débogage, Python est fortement inspiré du langage ABC, conçu pour enseigner la
programmation, mais avec des fonctionnalités améliorées comme la gestion des exceptions et
l’extensibilité. Ce nom « Python » vient de la série humoristique britannique Monty Python’s Flying
Circus, et non du serpent.
Version 1.0 (1991) est la première version officielle. Elle introduit les concepts clés comme les
fonctions, les modules, les exceptions et les types de données fondamentaux (listes, dictionnaires,
etc.) dans les années 1990, Python gagne en popularité grâce à sa syntaxe claire et ses modules
extensible.
C’est dans les années 2000 qu'une organisation à but non lucratif nommée python software
foundation est créée pour soutenir le développement de Python. C’est alors que Python 2.0 est
introduit dans le marché avec des fonctionnalités importantes comme la gestion automatique de la
mémoire (garbage collection) et les list comprehensions. Cependant, il souffrait de limitations liées à
la compatibilité ascendante. Puis en 2008 une refonte majeure Python 3.0 qui corrige les
incohérences de Python 2 mais tout en cassant la compatibilité avec les anciennes versions.
À partir de 2010 à aujourd’hui que Python est devenu l’un des langages les plus populaires, grâce à sa
simplicité et son adoption dans des domaines variés : développement web, data science, intelligence
artificielle, automatisation, et plus encore.
Python aujourd’hui est constitué d'une vaste communauté qui continue à accroître sa popularité et
contribue à des milliers de bibliothèques tout en facilitant l’adoption pour des cas d’utilisation
spécifiques.
Aujourd’hui Python est largement utilisé par des entreprises comme Google, Netflix, Instagram, et
est enseigné comme langage d’introduction dans de nombreuses universités. Il est apprécié pour sa
simplicité, sa polyvalence et sa richesse en ressources.
3.2 Algorithme des opérations matricielles
Avant de commencer notre travailler sur Python, il est indispensable que nous élaborons d’abord nos
algorithme. Comme il a été précisé dans le chapitre un l’élaboration des algorithmes est une étape
cruciale dans le travail de programmation informatique.
Les calculs matriciels en algorithmique impliquent des opérations comme l’addition, la soustraction,
la multiplication, la transposition, et le calcul de déterminants ou d’inverses de matrices.
Voici les algorithmes pour chaque opération
A) Addition de matrices
Principe : Additionner les éléments correspondants de deux matrices.
Algorithme addition de matrices
Début
Entrée : Deux matrices A et B de dimensions m x n
Sortie : Matrice C = A + B
1. Si les dimensions de A et B ne sont pas égales, afficher « Addition impossible » et arrêter.
2. Créer une matrice C de dimensions m x n.
3. Pour i allant de 1 à m :
Pour j allant de 1 à n :
C[i][j] = A[i][j] + B[i][j]
4. Retourner C
Fin
B) Multiplication de matrices
Principe : La multiplication d’une matrice (m x n) par une matrice (n x p) produit une matrice (m x
p). L’élément est calculé comme le produit scalaire de la iᵉ ligne de et de la jᵉ colonne de .
Algorithme multiplication de matrices
Début
Entrée : Deux matrices A (m x n) et B (n x p)
Sortie : Matrice C = A * B
1. Si le nombre de colonnes de A ≠ nombre de lignes de B, afficher « Multiplication impossible » et
arrêter.
2. Créer une matrice C de dimensions m x p, initialisée à 0.
3. Pour i allant de 1 à m :
Pour j allant de 1 à p :
Pour k allant de 1 à n :
C[i][j] = C[i][j] + A[i][k] * B[k][j]
4. Retourner C
Fin
C) Multiplication par un scalaire
Principe : On multiplie chaque élément de la matrice par le scalaire donné.
Entrées :Une matrice M de dimensions m × n (avec m lignes et n colonnes).
Un scalaire k
Sortie : Une matrice R de dimensions m × n , le résultat de la multiplication de M par k
Algorithme multiplication par un scalaire
Début
Lire m, n (les dimensions de la matrice M).
Créer une matrice M de dimensions m × n
Pour i allant de 1 à m :
Pour j allant de 1 à n
Lire M[i][j] (élément à la position i, j).
Lire k (le scalaire).
Créer une matrice R de dimensions m × n pour stocker le résultat.
Pour i allant de 1 à m :
Pour j allant de 1 à n :
R[i][j] k × M[i][j]
Afficher R
Fin
D) Soustraction des matrices
Principe : L’algorithme de la soustraction matricielle consiste à soustraire les éléments
correspondants de deux matrices. Pour que la soustraction soit valide, les matrices doivent avoir la
même dimension (nombre de lignes et de colonnes).
Algorithme soustraction matricielle
Entrées :Deux matrices A et B de taille m × n
Sortie :Une matrice C de taille m × n où chaque élément est obtenu par la soustraction des éléments
correspondants de A et B
1. Vérifier que les matrices A et B ont la même dimension.
2. Créer une matrice C de la même dimension que A et B.
3. Pour chaque élément i, j calculer la matrice C[i][j] = A[i][j] + B[i][j]
4. Retourner la matrice C
Algorithme soustraction_matricielle(A, B)
Début
Si taille(A) ≠ taille(B) alors
Afficher '’ Les matrices doivent avoir la même taille. '’
Retourner
Fin Si
Créer une matrice C de même taille que A et B.
Pour chaque i de 1 à m (nombre de lignes de A et B) faire
Pour chaque j de 1 à n (nombre de colonnes de A et B) faire
C[i][j] ← A[i][j] – B[i][j]
Fin Pour
Fin Pour
Retourner C
Fin
E) Transposition de matrice
Principe : La transposée d’une matrice (m x n) est une matrice (n x m) obtenue en échangeant les
lignes et colonnes.
Algorithme transposition de matrice
Début
Entrée : Matrice A de dimensions m x n
Sortie : Matrice A^T de dimensions n x m
1. Créer une matrice A^T de dimensions n x m.
2. Pour i allant de 1 à m :
Pour j allant de 1 à n :
A^T[j][i] = A[i][j]
3. Retourner A^T
Fin
F) Calcul du déterminant (Matrice 2x2)
Principe : Pour une matrice A = ( a bc d ) le déterminant est det(A) = ad - bc
Algorithme déterminant Matrice 2×2
Début
Entrée : Matrice A de dimensions 2 x 2
Sortie : Déterminant de A
Si A n’est pas une matrice 2x2, afficher ‘’Calcul impossible '’ et arrêter.
Sinon Calculer det = A[1][1] * A[2][2] – A[1][2] * A[2][1]
Retourner det
Fin
G) Inversion de matrice (2x2)
L’inversion d’une matrice est une opération qui consiste à trouver une matrice de forme A-¹ de sorte
que A × A-¹ = I où A est la matrice d’entrée et I est la matrice identité de même dimension.
Algorithme
1. Entrée : Une matrice carrée de A dimension n×n
2. Sortie : La matrice inverse A-¹ ou un message indiquant que A n’est pas inversible.
Étapes de l’algorithme
1. Initialisation :Construire une matrice A augmentée , où est la matrice identité de taille
n×n
2. Élimination de Gauss :
Pour chaque ligne de , effectuer les étapes suivantes :
Si l’élément diagonal , échanger cette ligne avec une autre ligne ayant un élément non nul
dans la même colonne.
Diviser toute la ligne par (le pivot) pour rendre .
Pour chaque ligne , soustraire un multiple approprié de la ligne pour rendre tous les
éléments de la colonne , sauf le pivot, égaux à 0.
3. Validation : Si à tout moment un pivot est nul et qu’il n’est pas possible de l’échanger, la
matrice n’est pas inversible.
4. Extraction : Une fois réduit à , extraire depuis la partie droite.
Algorithme Inversion_Matrice(A)
Début
Entrée : Matrice carrée A de dimension n × n
Sortie : Matrice inverse A_inv ou un message d’erreur
1. Construire la matrice augmentée [A|I], où I est la matrice identité
2. Pour i allant de 1 à n :
a. Si A[i][i] = 0 :
- Trouver une ligne k > i avec A[k][i] ≠ 0
- Si aucune ligne n’est trouvée, retourner '’ A n’est pas inversible '’
- Échanger les lignes i et k
b. Diviser la ligne i par A[i][i] pour rendre le pivot égal à 1
c. Pour chaque ligne j ≠ i :
- Soustraire A[j][i] * (ligne i) de la ligne j
3. Extraire la partie droite de [I|A^{-1}] comme étant A^{-1}
4. Retourner A^{-1}
Fin
H) Division des matrices
La division matricielle n’existe pas directement comme dans le cas d’autres opérations , car les
matrices ne possèdent pas de véritables résultats si elles ne respectent pas certaines règles.
Cependant, pout résoudre une division matricielle implicite on reformule A/B égal A × B -¹e
problème comme une multiplication par l’inverse :
1. Vérifier si est B carrée : L’inverse d’une matrice n’existe que pour les matrices carrées. Si
n’est pas carrée, il n’est pas possible d’inverser .
2. Calculer le déterminant de : Si le déterminant de B est nul ( det(B) = 0) ; alors B n’est pas
inversible.
3. Calculer : Si B est inversible, utilisez la formule pour obtenir l’inverse. Pour une matrice
carrée ou 2×2, l’inverse est donnée par : B-¹=1/det(B).
4. Multiplier A par B-¹ : effectuer cette opération pour obtenir le résultat
Algorithme division matricielle
Début
Entrée : Deux matrices A (n × m) et B (m × m)
Sortie : Résultat de A / B (n × m), ou message d’erreur si non possible
1. Si B n’est pas carrée (m × m) :
Afficher '’Erreur : B doit être une matrice carrée '’
Arrêter
2. Calculer det(B) Si det(B) == 0 :
Afficher ‘’ Erreur : B n’est pas inversible '’
Arrêter
Sinon Calculer det = B[1][1] * B[2][2] – B[1][2] * B[2][1]
3. Calculer l’inverse de B, noté B_inv =
4. Calculer le produit matriciel C = A × B_inv
5. Retourner C
Fin
3.3 Implémentation des opérations matricielles sous Python
A) Addition
B) Soustraction
C) Transposition
D) Calcul du déterminant
E) Inversion
F) Division