Exercice 14 Écrire une fonction réalisant la multiplication de deux matrices (de dimensions compa-
tibles, c’est-à-dire de la forme (n, p)et (p, q)).
Exercice 15 Écrire une fonction réalisant le calcul de Aq, avec A∈ Mn(R)et q∈Ndonnés. Combien
de multiplications matricielles sont réalisées pour calculer Aq?
Exercice 16 Combien d’additions et de multiplications de réels sont nécessaires pour effectuer les calculs
des 5 derniers exercices ?
Addition Multiplication scalaire Transposition Multiplication matrices Calcul de Aq
Additions n×p0 0
Multiplications 0 0
Exercice 17 Écrire une fonction testant le caractère symétrique d’une matrice (et renvoyant donc un
booléen).
>>> est_symetrique(m1)
False
>>> est_symetrique(m2)
True
3 Tri par sélection
L’objet de cette section est d’implémenter un algorithme de tri.
Informellement, il s’agit de trouver le plus grand élément d’un tableau, et le placer à la fin (et on
n’y touchera plus). On cherche ensuite le plus grand parmi ceux qui restent, et on le place à sa position
finale ; etc. Avec la notation Python des tableaux « slicés », et en notant nla taille du tableau :
– Calculer l’indice i0du plus grand élément de t[0:n] ; échanger t[i0] et t[n-1].
– Calculer l’indice i0du plus grand élément de t[0:n-1] ; échanger t[i0] et t[n-2].
– Calculer l’indice i0du plus grand élément de t[0:n-2] ; échanger t[i0] et t[n-3].
– ...
– Calculer l’indice i0du plus grand élément de t[0:2] ; échanger t[i0] et t[1].
On obtient ainsi l’algorithme assez naturel :
Entrées :T
pour jallant de nà2faire
Trouver un indice i0tel que T[i0] soit maximal dans T[0:j] # donc jusqu’à j−1inclus...
Échanger T[i0] et T[j-1]
Il est à noter qu’un tel algorithme est destructif : le tableau passé en paramètre sera modifié (et il
n’est donc pas nécessaire de retourner quoi que ce soit.
On pourrait faire le choix de préserver le tableau passé en paramètre. Il faudrait alors faire une copie
de celui-ci, travailler sur cette copie, et retourner finalement ce nouveau tableau sur lequel on a travaillé :
Entrées :T0
Copier T0dans un nouveau tableau T
pour jallant de nà2faire
Trouver un indice i0tel que T[i0] soit maximal dans T[0:j]
Échanger T[i0] et T[j-1]
Résultat :T
Exercice 18 Simuler l’exécution de cet algorithme sur le tableau [3, 42, 112, 50, 8, -5]
On va avoir besoin de deux programmes extérieurs :
– un programme qui trouve la position du plus grand élément du début d’un tableau ;
– un autre réalisant l’échange de deux éléments.
On pourrait encapsuler ces tâches dans le programme de tri, mais c’est toujours une bonne idée de
travailler de façon modulaire, en déléguant des tâches non élémentaires à d’autres programmes.
4