TD7 Listes - Matrice
TD7 Listes - Matrice
TD7 Listes - Matrice
Benghazouani
Cette instruction va créer une matrice de 3 lignes et 4 colonnes, initialisée par None
Exercice N° 1 :
Ecrire une fonction « unitaire(n) » qui construit et retourne une matrice carrée
unitaire de dimension n. Une matrice unitaire est une matrice, telle que :
Exercice N° 2 :
Exercice N° 3 :
Ecrire un programme permettant d’effectuer la somme de deux matrices carrées (n, n), n donné
Rappel:
/ \ / \ / \
| a b c d | | a' b' c' d' | | a+a' b+b' c+c' d+d' |
| e f g h | + | e' f' g' h' | = | e+e' f+f' g+g' h+h' |
| i j k l | | i' j' k' l' | | i+i' j+j' k+k' l+l' |
\ / \ / \
Exercice N° 4 :
Ecrire un programme permettant d’effectuer le produit des matrices A (n, n) et B (n, n). n donné.
La multiplication de deux matrices se fait en multipliant les composantes des deux matrices lignes
par colonnes:
Rappel:
| a b c | | p q | | a*p + b*r + c*t a*q + b*s + c*u
| e f g | * | r s | = | e*p + f*r + g*t e*q + f*s + g*u
| h i j | | t u | | h*p + i*r + j*t h*q + i*s + j*u
| k l m | \ / | k*p + l*r + m*t k*q + l*s + m*u
\ /
1
CPGE MED 5 MPSI Pr. S.Benghazouani
Exercice N° 6 : Écrire une fonction "zoro(n)" qui crée et renvoie une matrice carrée de taille n,
comprenant des 1 sur la première ligne, sur la diagonale et sur la dernière ligne et des 0 partout
ailleurs.
Exercice N° 7 : Ecrire une fonction « pascal( n ) » qui construit et affiche le triangle de PASCAL
de degré n. Exemple: Triangle de Pascal de degré 6 :
Méthode :
Construire le triangle ligne par ligne:
- Initialiser le premier élément et l'élément de la diagonale à 1.
- Calculer les valeurs entre les éléments initialisés de gauche à droite en utilisant la relation:
Pi,j = Pi-1,j + Pi-1,j-1
Rappel : Soit M une matrice carrée de dimension n. La matrice M admet une décomposition LU
unique si et seulement si les déterminants des sous-matrices de M, d’ordre k tel que k ∈[1,n-1], sont
tous non nuls.
2
CPGE MED 5 MPSI Pr. S.Benghazouani
NB : Dans la suite de cette partie, on suppose que la matrice M admet une décomposition LU
unique.
Algorithme de ‘Doolittle’
L’algorithme de Doolittle est un algorithme qui décompose une matrice carrée, qui admet une
décomposition LU unique, en deux matrices : la matrice L triangulaire inférieure avec des 1 dans sa
diagonale, et la matrice U triangulaire supérieure :
Q.1- Écrire la fonction matrice_zeros (n) qui reçoit en paramètre un entier strictement positif n et
qui retourne la matrice d’ordre n (n lignes et n colonnes), remplie par des zéros.
Q.2- Écrire la fonction matrice_id (n) qui reçoit en paramètre un entier strictement positif n et qui
retourne la matrice identité d’ordre n (n lignes et n colonnes).
Q.4- Écrire la fonction doolittle (M) qui reçoit en paramètre une matrice carrée M admettant
une décomposition LU. En utilisant l’algorithme de Doolittle, la fonction effectue la décomposition
LU de la matrice M, et retourne les matrices L et U.
3
CPGE MED 5 MPSI Pr. S.Benghazouani
Q.5- Écrire la fonction descente (L, Y) qui reçoit en paramètres la matrice triangulaire inférieure L,
et le vecteur Y. La fonction retourne le vecteur Z, solution du système triangulaire inférieur : L * Z
= Y.
Pour calculer les éléments du vecteur Z, on peut utiliser la formule
suivante :
Exemple :
La fonction descente (L, Y) retourne le vecteur Z suivant : [ 1. 1. 0. 2.67 ]
Q.6- Écrire la fonction remonte (U, Z) qui reçoit en paramètres la matrice triangulaire supérieure U,
et le vecteur Z. La fonction retourne le vecteur X, solution du système triangulaire supérieur : U * X
=Z
Pour calculer les éléments du vecteur X, on peut utiliser
la formule suivante :
Exemple :
La fonction remonte (U, Z) retourne le vecteur X suivant : [ 2. -1. 3. 1. ]
4
CPGE MED 5 MPSI Pr. S.Benghazouani
Le choix du pivot
A cause des arrondis dans les calculs, le choix du pivot est essentiel. La règle est de toujours choisir
comme pivot la plus grande valeur absolue des éléments d'une sous-colonne choisie. On fera alors
un échange de ligne afin d'amener ce pivot à sa position ultime, c'est-à dire tout en haut d'une sous-
colonne traitée
5
CPGE MED 5 MPSI Pr. S.Benghazouani
Les transvections
Pour mettre un système sous forme triangulaire, on va réaliser des transvections, c’est-à-dire des
opérations élémentaires de la forme : « On ajoute tant de fois telle équation à telle autre ».
Le but est d’éliminer des inconnues dans des équations... mais pas dans le désordre !
Exemple :
Etape 5 : la remontée
La solution : z= 3, y = 2, x = 1
Formalisation de l’algorithme
Pour i de 0 à n − 2 faire
Trouver j entre i et n − 1 tel que |aj,i| soit maximal
Échanger Li et Lj # coefficients de la matrice et membre de droite.
Pour k de i + 1 à n − 1 faire
Lk ← Lk − (ak,i/ai,i) Li
A la fin de cet algorithme, le système est sous forme triangulaire, et il n’y a plus qu’à « remonter »,
via des substitutions. Le résultat est mis dans un tableau x, et il s’agit donc de calculer :
Q1) Écrire une fonction : transvection(M,p,q,r), qui reçoit en paramètres une matrice M, deux
entiers p et q représentant les indices de deux lignes dans la matrice M, et un nombre réel r. Dans la
matrice M, la fonction remplace la ligne p par la ligne résultat de la combinaison linéaire des deux
lignes p et q, suivante : Mp+r*Mq.
6
CPGE MED 5 MPSI Pr. S.Benghazouani
Q2) Écrire la fonction : echange_lignes(M,p,q), qui reçoit en paramètres une matrice M, et deux
entiers p et q représentant respectivement deux indices de deux lignes dans la matrice M. la fonction
échange les lignes p et q dans la matrice M.
Q3) Écrire la fonction : ligne_pivot(M,c), qui reçoit en paramètres une matrice M, et un entier c
représentant une colonne dans la matrice M.
avec c<=i<=n
Exemple :
Si la matrice M est la suivante : La fonction ligne_pivot (M, 1) retourne l’indice : 2,
car, dans la colonne 1, l’élément -3.0 est le plus grand en valeur absolue, parmi les
éléments des lignes 2, -3 et -2.
Q5) Ecrire une fonction résolution (A,B) qui permet de résoudre le système AX=B