MP, PSI et la TSI

Notification de cookies

Nous utilisons des cookies pour améliorer votre expérience. En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Plus d'informations

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 M. ESSADDOUKI

Learning a new programming language is an easy thing, but the most difficult thing is how to design efficient algorithms for real-world problems, so don't be a programmer, be a problems solver.

Cours Similaires :