Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

03 - Methode Du Pivot de Gauss Pages 1 A 4

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

INFORMATIQUE PCSI : TD PYTHON N°3

RESOLUTION DE SYSTEMES MATRICIELS :


METHODE DU PIVOT DE GAUSS
But : Mettre en place la résolution d’un système linéaire par la méthode du pivot de Gauss (ou
Gauss-Jordan). Nous nous contenterons de résoudre des systèmes admettant une unique solution.
(de tels systèmes sont appelés systèmes de Cramer, mais ce mot est hors-programme)

PARTIE I - RESOLUTION A LA MAIN


 –x1 – 2x2 – x3 = –1
1) On considère le système (S1) suivant :  2 x1 + x2 + x3= –4
 4 x1 + 2 x2 – 5 x3 = –8

a) Résoudre ce système en utilisant la méthode du pivot de Gauss en notant soigneusement les


opérations élémentaires utilisées (cf chapitre associé du semestre 1).

Pour vérifier uniquement : on doit trouver à la fin (x1, x2, x3) = (-3,2,0).

 x1 
b) Si on pose X =  x2 , le système (S1) est équivalent à AX = B avec : A = … et B = …
 x3 

c) Les opérations élémentaires sont en fait effectuées sur la matrice M1 appelée ……………………

M1 = …

2x + y – z + t = 12
 8x +4 y + 2z – 3t = 27
2) On considère le système (S ) suivant :  –6x – y + 5z + 4t = –17
2

 2x + 5y + 2z – t = 2

a) La matrice M2 correspondant à ce système est M2 = …


b) Résoudre ce système en utilisant la méthode du pivot de Gauss en notant soigneusement
les opérations élémentaires utilisées.

… on doit trouver à la fin (x1, x2, x3, x4) = (5,-1,0,3).

c) Dans quels cas a-t-on eu besoin de permuter des lignes ?

3) a) Quelles sont les deux grandes étapes de ces résolutions de système ?

b) Quelles opérations élémentaires ont été utilisées dans ces deux grandes étapes ?

PARTIE II - RAPPELS SUR L’UTILISATION DES LISTES 2D


En Python, une matrice est simplement une liste de liste. Par exemple, la matrice :

 4 3 -1 5 
N =  -8 4 5 6  sera codé : N = [ [4 , 3 , –1 , 5] , [–8 , 4 , 5 , 6] , [1 , 6 ,–3 , 5]]
 1 6 -3 5 

Sans utiliser votre ordinateur, écrire les réponses renvoiées dans la console pour les requêtes
suivantes :

>>>> N[2][1] ……………………………………………………………………………………………………………

>>>> N[0] ……………………………………………………………………………………………………………

>>>> N ……………………………………………………………………………………………………………

>>>> len(N) …………………………………………………………………………………………………………….

Comment récupérer le nombre de colonnes de la matrice ? …………………………………………………..

>>>> [0] × len(N) …………………………………………………………………………………………………………….

On définit la fonction affiche ainsi : la commande affiche(matrice)


def affiche(matrice): renvoie donc sur la console l’affichage :
nbLignes=len(matrice)
for i in range(nbLignes):
print(matrice[i])
3

PARTIE III
MISE EN PLACE DE L’ALGORITHME DU PIVOT DE GAUSS

I. CAS D’UN SYSTEME TRIANGULAIRE

1) On considère un système triangulaire : Ecrire la matrice augmentée M

(avec les coefficients M=

diagonaux non nuls)

On veut résoudre le système, on a alors en isolant chaque xi :

xn = ……… xn–1 = …………………………………. xn–2 = ………………………………………………………

De manière générale, pour ∈ ⟦1; ⟧, xi = ………………………………………………..……………………

2) a) Compléter la fonction suivante qui prend en argument une matrice M qui en pratique
correspondra à un système triangulaire, et qui renvoie le vecteur X solution de ce
système :

def remonter (M) :

nbLignes=………………………

X=…………………………………………  on crée un vecteur ligne X de la bonne taille ne contenant que des zéros

X[nbLignes-1]= ………………………

for i in range (nbLignes–2, ………… , …………) :  i désignera un numéro de LIGNE

X[i]= ………………………

for j in range (………………………………) :  j désignera un numéro de COLONNE

X[i] =………………………

X[i]=X[i]/M[i][i]

return(……)

b) Créer un programme nommé Gauss_VotreNom et y écrire cette fonction.

Tester votre programme avec le système (S3) suivant dont l’unique solution est (1 ; –1 ; 2 ; 4).

 3x 1 – x2 + 2 x3 – x4 = 4
x2+ x3 – 5 x4= –19
 –2 x3 – x4= –8 (on notera M3 la matrice augmentée associée)
 x4 = 4
4
II. TRIANGULARISATION DU SYSTEME

1) Les opérations élémentaires


a) Dans la première partie, pour « triangulariser » le système, on a utilisé deux types
d’opération élémentaires : les transpositions (échanges de lignes) et les transvections.

b) Compléter l’en-tête (variables) de deux fonctions correspondantes.


(Attention : Ces fonctions ne renvoient rien mais modifient la matrice M)

def transposition(…………………………………………….)

def transvection(…………………………………………….)

c) Ecrire dans votre programme le corps des deux fonctions dont vous avez écrit l’en-tête
Vous testerez évidemment vos fonctions, avec la matrice M3 par exemple.
Cela fonctionne ?

2) Triangularisation sans échange


a) On suppose pour l’instant que pour le système que l’on cherche à résoudre, aucune
permutation de ligne n’est nécessaire pour triangulariser le système.

Dans le même programme, écrire une fonction triangulariserSansEchange qui prend en


paramètre une matrice M correspondant à un système, et qui la transforme en une
matrice correspondant à un système triangulaire équivalent.

Tester votre fonction avec le système (S1) de la première partie.

b) SANS UTILISER L’ORDINATEUR, dire ce qui va se passer si vous testez votre fonction avec
le système (S2) de la première partie ? (si vous ne trouvez pas, exécutez le programme…)

…………………………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………………………

3) Triangularisation avec échange


a) Écrire une fonction lignePivot( M , c ) qui recherche un pivot non nul dans la matrice M
sur la colonne d’indice c.
Cette fonction doit renvoyer le numéro de la ligne du premier pivot non nul. Il s’agit donc
de renvoyer le premier numéro de ligne supérieur ou égal au numéro de la colonne tel que
M[numLigne][numColonne]  0.

 40 30 -1
5
5
6 
Ex : Si M =  0 6 -3 5  lignePivot(M,1) doit renvoyer ………
07 5 -2 
b) Ecrire une fonction triangulariser qui prend en paramètre une matrice M correspondant
à un système, et qui la transforme en une matrice correspondant à un système triangulaire
équivalent. Cette fonction doit gérer les cas où des échanges sont nécessaires.

III. RESOLUTION DU SYSTEME

Ecrire une fonction pivotGauss qui prend en argument une matrice M correspondant à
un système dit « de Cramer » et qui renvoie l’unique vecteur X solution de ce système.

Tester votre fonction avec les deux systèmes (S1) et (S2) de la première partie et
vérifier que vous retrouvez bien les mêmes solutions qu’à la main.

Vous aimerez peut-être aussi