Vous êtes sur la page 1sur 7

CPGE MED 5 MPSI Pr. S.

Benghazouani

TD 7 : Les listes- Matrices


A

Déclaration de tableaux à deux dimensions

Syntaxe : A=[[None]*colonnes for i in range(0,ligne)]

Exemple : A=[[None]*4 for i in range(0,3)]

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 :

Ecrire une fonction « transoposee( M ) » qui retourne


la transposition Mt d'une matrice M. Exemple :

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° 5 : : (Trace d’une matrice carrée)


Écrire une fonction trace(A) d’argument A une matrice et qui retourne la somme des coefficients
diagonaux de A (appelée trace de A) si A est une matrice carrée et la chaîne de caractères ’trace of a
non square matrix is not defined’ sinon.

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

Exercice N° 8 : Écrire une fonction is_upper_triangular(A) qui retourne True


si A est une matrice est triangulaire supérieure (donc en particulier carrée), et
False sinon

A est triangulaire supérieure si et seulement si :

Problème I: Décomposition LU - Algorithme de ‘DOOLITTLE’


Dans cette partie, on suppose que le module numpy est importé : import numpy as np
En algèbre linéaire, la décomposition LU est une méthode de décomposition d'une matrice comme
produit de deux matrices L et U, telles que :
L est une matrice triangulaire inférieure, formée de 1 sur sa diagonale,
U est une matrice triangulaire supérieure.
Cette décomposition est utilisée pour résoudre des systèmes d'équations linéaires, pour
calculer le déterminant d’une matrice, …

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.3- Écrire la fonction sigma (L, U, i, j) qui reçoit en paramètres


deux matrices carrées L et U de même dimension, un entier positif i
qui représente l’indice d’une ligne dans L, et un entier positif j qui
représente l’indice d’une colonne dans U. La fonction retourne la
valeur de la somme suivante :

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

Résolution d’un système d’équations linéaires par


décomposition LU :
On considère le système d’équations linéaires : M * X = Y,
sachant que :
• M est une matrice carrée donnée, qui admet une
décomposition LU ;
• Y est un vecteur donné ;
• X est le vecteur inconnu, qui représente la solution du
système.

En réalisant la décomposition LU de la matrice M, on obtient la matrice triangulaire inférieure L


avec des 1 dans sa diagonale, et la matrice triangulaire supérieure U, telles que : M = L * U.

Ainsi, résoudre le système initial M * X = Y, revient à résoudre du système L * U * X = Y


Donc, pour résoudre ce dernier système, on doit résoudre successivement deux systèmes
triangulaires :
i. On commence par résoudre le système triangulaire inférieur : L * Z = Y, à fin de trouver le
vecteur Z ;
ii. Ensuite, on résout le système triangulaire supérieur : U * X = Z, à fin de trouver le vecteur X ;
NB : Dans la suite de cette partie, on ne doit pas utiliser la méthode prédéfinie solve().

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

Problème II: Résolution de systèmes linéaires


Résoudre AX=B
_ L'algorithme appelé "Pivot de Gauss" permet de résoudre des systèmes linéaires à n équations à p
inconnus.
_ On se placera dans le cas où n=p, système dit de Cramer.
_ Soit le système linéaire :

Règles pour résoudre AX=B


_ Sur un système linéaire de la forme AX=B les traitements possibles sont sans changer sa solution:
_ Changer l’ordre des équations
_ Changer l’ordre des variables
_ Multiplier une équation par une constante non nulle
_ Ajouter à une équation une « combinaison linéaire » des autres équations
_ Le but est de faire le nombre d'opérations possibles afin d'obtenir un système tri-diagonal. Et par
remontées successives d'avoir les solutions du système initiale.
_ Nous obtenons le système suivant :

Où il est facile par remontées successives d'avoir la solution si elle existe.

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.

Q4) Ecrire une fonction remontée (A,B) avec A triangulaire supérieure

Q5) Ecrire une fonction résolution (A,B) qui permet de résoudre le système AX=B

Vous aimerez peut-être aussi