Accueil › Cours › Les matrices
Matrices en algo et Python : parcours, diagonales, transposée
Un tableau à deux dimensions : lignes et colonnes, parcours, sommes, maximum, diagonales et transposée.
Les leçons de ce chapitre
- Créer et afficher une matrice
- Calculer sur une matrice
- Chercher et transposer
Leçon 17.1 : Créer et afficher une matrice
Une matrice est un tableau à deux dimensions : des lignes et des colonnes, comme une grille de mots croisés ou un tableau de notes (une ligne par élève, une colonne par matière). Chaque case a deux indices : M[i, j] est la case de la ligne i et de la colonne j.
- Dans le TDO :
M | Matrice de 3 lignes et 4 colonnes d'entiers(ouTableau de 3 x 4 Entiers). - En Python, une matrice est une liste de listes :
M = [[0] * 4 for i in range(3)]crée 3 lignes de 4 zéros. On écritM[i][j]. - Pour visiter toutes les cases : deux boucles
Pourimbriquées, une pour les lignes, une pour les colonnes.
Attention : Ne crée pas une matrice avec [[0] * 4] * 3 : les trois lignes seraient la même liste, et changer une case changerait toute la colonne. Utilise for … in range comme ci-dessus.
Astuce : Au bac, on rencontre aussi from numpy import array puis M = array([[int()] * 4] * 3) : avec numpy, cette écriture est sûre et on écrit M[i, j].
En Python
On remplit une matrice 2 × 3 avec les valeurs lues, puis on l'affiche ligne par ligne.
L = 2
C = 3
M = [[0] * C for i in range(L)]
for i in range(L):
for j in range(C):
M[i][j] = int(input())
for i in range(L):
ligne = ""
for j in range(C):
ligne = ligne + str(M[i][j]) + " "
print(ligne)
En algorithme
Les lignes vont de 1 à L et les colonnes de 1 à C.
Algorithme AfficherMatrice
Début
L ← 2
C ← 3
Pour i de 1 à L Faire
Pour j de 1 à C Faire
Lire(M[i, j])
FinPour
FinPour
Pour i de 1 à L Faire
ligne ← ""
Pour j de 1 à C Faire
ligne ← ligne + convch(M[i, j]) + " "
FinPour
Ecrire(ligne)
FinPour
Fin
TDO
Objet | Type/Nature
M | Matrice de 2 lignes et 3 colonnes d'entiers
L, C, i, j | Entier
ligne | Chaîne
Leçon 17.2 : Calculer sur une matrice
Les calculs sur une matrice reprennent ceux des tableaux, avec deux boucles. On peut parcourir toutes les cases, une seule ligne (i fixé, j varie) ou une seule colonne (j fixé, i varie).
Pour une matrice carrée n × n, la diagonale principale contient les cases où i = j, et la deuxième diagonale celles où i + j = n + 1 (en algorithme, indices à partir de 1) ou i + j = n - 1 (en Python, à partir de 0).
Astuce : Pour une diagonale, une seule boucle suffit : M[i, i] pour la principale, M[i, n + 1 - i] pour l'autre.
En Python
Somme de toutes les cases et maximum d'une matrice donnée.
M = [[12, 7, 30], [5, 41, 9], [18, 3, 26]]
n = 3
s = 0
grand = M[0][0]
for i in range(n):
for j in range(n):
s = s + M[i][j]
if M[i][j] > grand:
grand = M[i][j]
print("Somme :", s)
print("Maximum :", grand)
En algorithme
Le maximum commence avec la première case M[1, 1], jamais avec 0.
Algorithme SommeMax
Début
M[1, 1] ← 12
M[1, 2] ← 7
M[1, 3] ← 30
M[2, 1] ← 5
M[2, 2] ← 41
M[2, 3] ← 9
M[3, 1] ← 18
M[3, 2] ← 3
M[3, 3] ← 26
n ← 3
s ← 0
grand ← M[1, 1]
Pour i de 1 à n Faire
Pour j de 1 à n Faire
s ← s + M[i, j]
Si M[i, j] > grand Alors
grand ← M[i, j]
FinSi
FinPour
FinPour
Ecrire("Somme : ", s)
Ecrire("Maximum : ", grand)
Fin
TDO
Objet | Type/Nature
M | Matrice de 3 lignes et 3 colonnes d'entiers
n, s, grand, i, j | Entier
Leçon 17.3 : Chercher et transposer
Chercher une valeur dans une matrice se fait comme dans un tableau, mais il faut deux indices. Pour s'arrêter dès qu'on trouve, on utilise des boucles Tant que et un booléen.
La transposée d'une matrice L × C est une matrice C × L : la ligne i devient la colonne i. Autrement dit TR[j, i] ← M[i, j].
Astuce : Avec deux Tant que, on remet j au début à chaque nouvelle ligne, et on avance à la ligne suivante seulement si on n'a pas trouvé.
En Python
On cherche une valeur et on affiche sa position (ligne, colonne), comptées à partir de 1.
M = [[3, 8, 1], [9, 4, 7]]
x = int(input())
trouve = False
i = 0
while i < 2 and not trouve:
j = 0
while j < 3 and not trouve:
if M[i][j] == x:
trouve = True
else:
j = j + 1
if not trouve:
i = i + 1
if trouve:
print("Ligne", i + 1, "colonne", j + 1)
else:
print("Absent")
En algorithme
Mêmes boucles avec des indices de 1 à 2 et de 1 à 3.
Algorithme ChercherMatrice
Début
M[1, 1] ← 3
M[1, 2] ← 8
M[1, 3] ← 1
M[2, 1] ← 9
M[2, 2] ← 4
M[2, 3] ← 7
Lire(x)
trouve ← Faux
i ← 1
Tant que (i ≤ 2) et (Non trouve) Faire
j ← 1
Tant que (j ≤ 3) et (Non trouve) Faire
Si M[i, j] = x Alors
trouve ← Vrai
Sinon
j ← j + 1
FinSi
FinTantQue
Si Non trouve Alors
i ← i + 1
FinSi
FinTantQue
Si trouve Alors
Ecrire("Ligne ", i, " colonne ", j)
Sinon
Ecrire("Absent")
FinSi
Fin
TDO
Objet | Type/Nature
M | Matrice de 2 lignes et 3 colonnes d'entiers
x, i, j | Entier
trouve | Booléen
S'entraîner gratuitement
Chaque leçon a 3 exercices gratuits avec indices pour appliquer ce chapitre avec Hannibot.
← Chapitre précédent : Arithmétique · Chapitre suivant : Les enregistrements →
Tous les chapitres · Voir les devoirs corrigés de 2ème TI
Cours écrit pour Mission Carthage d'après le programme officiel. Ton professeur reste la référence.