MP, PSI et la TSI

TP pivot de gauss avec correction

Pour résoudre le système AX = B supposé de Cramer (la matrice A est inversible), on construit la matrice AB en accolant la matrice A et la matrice B. Si A est de taille n×n et B de taille n×1, alors la matrice AB est de taille n×(n+1). Puis on effectue les opérations sur les lignes jusqu’à arriver à un système triangulaire. On remonte ensuite par substitutions pour obtenir la solution du système.

1. Ecrire une fonction concatener(A,B) prenant en argument une matrice carrée A de taille n et une matrice colonne B de taille n et renvoyant la matrice AB correspondante. On devra obtenir :


>>> concatener ([[2 ,3] ,[1 ,0]] ,[[4] ,[1]])
[[2, 3, 4], [1, 0, 1]]

2. Ecrire une fonction echanger(M,i,j) qui échange dans la matrice M la ligne i et la ligne j. On devra obtenir :


>>> M=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>> echanger(M,0,2)
>>> M
[[9, 10, 11, 12], [5, 6, 7, 8], [1, 2, 3, 4]]

3. Ecrire une fonction ajouter(M,i,j  ,a) qui ajoute, à la ligne i, a fois la ligne j.


>>> M=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>> ajouter(M,0,2,-2)
>>> M
[[-17, -18, -19, -20], [5, 6, 7, 8], [9, 10, 11, 12]]

4. Ecrire une fonction choixPivot(M,i) qui cherche dans les éléments mii, m(i+1),i,...,mni le premier pivot non nul et qui renvoie l’indice de la ligne correspondante. On doit obtenir le résultat suivant :


>>> M = [[1,3,2,4,1],[0,0,3,7,1],[0,1,5,1,0],[1,2,1,1,4]]
>>> choixPivot(M,1)
2

Lorsque l’on s’occupe de la colonne d’indice i, l’algorithme du pivot de Gauss se déroule de la façon suivante :

rechercher un pivot : on le trouve à la ligne i0 ;


échanger les lignes i et i0 ;

pour chaque valeur de k entre i + 1 et n, réaliser l’opération

Et on passe ensuite à la colonne suivante. On fait cela sur la matrice AB pour les colonnes de 1 à n.


5. Ecrire une fonction trianguler(M) qui réalise cette opération. On devrait obtenir le résultat suivant:


>>> M = [[1,3,2,4,3],[0,0,3,6,3],[0,1,5,3,4],[1,2,1,2,2]]
>>> trianguler(M)
>>> M
[[1, 3, 2, 4, 3], [0, 1, 5, 3, 4], [0, 0, 3, 6, 3], [0, 0, 0, -7, -1]]

À la suite de cet algorithme, on obtient un système triangulaire. Il faut ensuite remonter le système par substitution. Si A*X = B* est un système triangulaire, on calcule xn =b*n/ a*n, n .Puis lorsque l’on cherche à calculer xn−i, on connait déjà xn,xn−1, . . . ,xn−i+1 et on a

6. Ecrire la fonction remonter(M) de remontée qui prend en argument une matrice de type AB avec A supposée triangulaire et renvoie le vecteur colonne solution X associé. On doit obtenir le résultat suivant :


>>> M = [[1,2,3],[0,1,1]]
>>> remonter(M)
[[1.0] , [1.0]]

7. Ecrire une fonction PivotDeGauss(A,B) qui prend en argument la matrice A carrée supposée inversible et la matrice colonne B et renvoie le vecteur solution X de l’équation AX = B. Par exemple, pour un système particulier on aura :


>>> PivotDeGauss ([[10 ,7 ,8 ,7] ,[7 ,5 ,6 ,5] ,[8 ,6 ,10 ,9] ,[5 ,7 ,9 ,10]] , [[32] ,[23] ,[33] ,[31]])
[[1.0] , [1.0] , [1.0] , [1.0]]

8. Essayer l’algorithme du pivot de Gauss sur le système suivant :


Le résultat est-il bien une solution ?

9. Modifier la fonction de recherche du pivot afin d’obtenir une stratégie de pivot partiel. On devrait obtenir le résultat suivant :


>>> M = [[1,3,2,4,1],[0,0,3,7,1],[0,1,5,1,0],[1,2,1,1,4]]
>>> choixPivotPartiel(M,1)
3

10. Relancer l’algorithme du pivot avec cette stratégie sur le système 1. La solution est-elle meilleure ?

Télécharger la correction


Partager ce cours avec tes amis :
Rédigé par Mostafa Sedoki
Computer science teacher and the founder of the e-learning platform "developpement-informatique.com", my mission is to provide high-quality courses for free to all computer science students and teachers

Cours Similaires :