- Systèmes Linéaires et algorithme de Gauss1 - 1 Résolution de ...
- Systèmes Linéaires et algorithme de Gauss1 - 1 Résolution de ...
- Systèmes Linéaires et algorithme de Gauss1 - 1 Résolution de ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
IUT <strong>de</strong> Laval Année Universitaire 2007/2008Département Informatique, 2ème annéeAlgèbre linéaire <strong>et</strong> GéométrieTP- Systèmes Linéaires <strong>et</strong> <strong>algorithme</strong> <strong>de</strong> Gauss 1 -1 Résolution <strong>de</strong> systèmes linéairesUn système <strong>de</strong> p équations linéaires à n inconnues se présente sous la forme⎧a 11 x 1 + a 12 x 2 + · · · + a 1n x n = y 1⎪⎨ a 21 x 1 + a 22 x 2 + · · · + a 2n x n = y 2(E). . ⎪⎩a p1 x 1 + a p2 x 2 + · · · + a pn x n = y pEn utilisant le produit matriciel, on peut l’écrire <strong>de</strong> la manière suivante :⎛⎞ ⎛ ⎞ ⎛ ⎞a 11 a 12 . . . a 1n x 1 y 1a 21 a 22 . . . a 2nx 2⎜⎟ ⎜ ⎟⎝ . . . ⎠ ⎝ . ⎠ = y 2⎜ ⎟⎝ . ⎠ ⇔ Ax = ya p1 a p2 . . . a pn x n y pScilab possè<strong>de</strong> plusieurs primitives pour résoudre <strong>de</strong>s sytèmes d’équations linéaires commelinsolve(A,y) qui renvoie une solution <strong>de</strong> l’équation Ax + y = 0 (sans dire s’il y ena d’autres) ou la matrice vi<strong>de</strong> [ ] avec un warning s’il n’y a pas <strong>de</strong> solution. Attention,pour trouver une solution <strong>de</strong> Ax = y, il faudra donc taper linsolve(A,-y).Exercice 1 : Utiliser la comman<strong>de</strong> linsolve pour trouver une solution <strong>de</strong> l’équationAx = y avec⎛⎞ ⎛ ⎞−2 2 2 −1−2A = ⎜ 1 3 −1 −2⎟⎝ 2 1 −2 2 ⎠ y = ⎜ 1⎟⎝ 2 ⎠0 −1 0 10Calculer le produit <strong>de</strong> A par le vecteur u=[0 ;0 ;-1 ;0]. Que peut-on en déduire ?Que se passe-t-il si on remplace le 2ème coefficient <strong>de</strong> y par 0 ?Faire help linsolve pour plus d’informations.Pour résoudre un système carré (autant <strong>de</strong> lignes que <strong>de</strong> colonnes), on peut aussiutiliser l’inverse <strong>de</strong> la matrice, s’il existe. En eff<strong>et</strong>, dans ce cas, on a<strong>et</strong> il y a alors unicité <strong>de</strong> la solution.Ax = y ⇔ A −1 Ax = A −1 y ⇔ x = A −1 yAttention, si la matrice n’est pas inversible, alors il peut arriver n’importe quoi (pas<strong>de</strong> solution, infinité <strong>de</strong> solutions,. . .)1 Merci à Philippe Roux qui est l’auteur <strong>de</strong> ce TP
Exercice 2 : Soit E un espace vectoriel. Dans chacun <strong>de</strong>s cas suivants, on veut décomposerle vecteur y en combinaison linéaire <strong>de</strong> vecteurs <strong>de</strong> F. Pour celà :– écrire le système d’équations linéaires sur les coefficients d’une combinaison linéaire<strong>de</strong> vecteurs <strong>de</strong> F– résoudre ce système en utilisant linsolve puis l’inversion <strong>de</strong> matrice1. E = R 3 avec F = {a, b, c} où⎛a = ⎝−111⎞⎛⎠ b = ⎝2. E = C 3 avec F = {a, b, c} où⎛a = ⎝1−1i⎞⎛⎠ b = ⎝3. E = R 4 avec F = {a, b, c, d} oùa =⎛⎜⎝12−1−2⎞ ⎛⎟⎠ b = ⎜⎝230−11−111−11⎞⎛⎠ c = ⎝⎞⎞ ⎛⎟⎠ c = ⎜⎝⎛⎠ c = ⎝13−1011−1i1−1⎞⎛⎠ <strong>et</strong> y = ⎝⎞⎞ ⎛⎟⎠ d = ⎜⎝⎛⎠ <strong>et</strong> y = ⎝12142−3−11 + i1 − ii⎞⎠⎞ ⎛⎟⎠ <strong>et</strong> y = ⎜⎝⎞⎠714−12⎞⎟⎠Exercice 3 : Soient⎛A = ⎝2 0 2−1 2 11 1 2⎞⎛⎠ x = ⎝220⎞⎛⎠ y = Ax <strong>et</strong> u = ⎝1. Calculer y puis comparer le résultat <strong>de</strong> linsolve(A,-y) avec x.2. Montrer que tout vecteur <strong>de</strong> la forme z = x + λu avec λ ∈ R est solution<strong>de</strong>l’équation Az = y.3. Montrer qu’il n’y a pas d’autre solution à c<strong>et</strong>te équation (si z est solution, regar<strong>de</strong>rz − x . . . ).11−1⎞⎠2 Algorithme <strong>de</strong> GaussLa métho<strong>de</strong> la plus employée pour résoudre <strong>de</strong>s systèmes linéaires est la métho<strong>de</strong> <strong>de</strong>Gauss. Elle consiste à transformer le système (E), par une série <strong>de</strong> manipulations élémentairessur les équations du système (permutations, addition d’équations, multilication parun réel), en un système triangulaire qui est alors facile à résoudre :⎧a 11 x 1 + a 12 x 2 + · · · + a 1n x n = y 1⎪⎨ a 21 x 1 + a 22 x 2 + · · · + a 2n x n = y 2(E). . ⎪⎩a p1 x 1 + a p2 x 2 + · · · + a pn x n = y pGauss−−−−−→⎧⎪⎨⎪⎩ã 11 x 1 + ã 12 x 2 + · · · + ã 1n x n = ỹ 1ã 22 x 2 + · · · + ã 2n x n = ỹ 2. .. . .ã pn x n = ỹ pMatriciellement, il faudra appliquer les opérations élémentaires à la fois sur la matriceA <strong>et</strong> sur y.2
Voici un exemple très simple <strong>de</strong> mise en oeuvre <strong>de</strong> la métho<strong>de</strong> <strong>de</strong> Gauss :⎧⎨⎩⎧⎨⎩⎧⎨⎩système d’équationsA =x + y + z = 1 L 1⎛x − y + 2z = 2 L 2⎝−x + 2y + z = −4 L 3A =x + y + z = 1 L 1⎛− 2y + z = 1 L 2 − L 1⎝3y + 2z = −3 L 3 + L 1A =x + y + z = 1 L 1⎛− 2y + z = 1 L 2 − L 1⎝7z = −3 2˜L 3 + 3˜L 2version matricielle1 1 11 −1 2−1 2 11 1 10 −2 10 3 21 1 10 −2 10 0 7⎞⎛⎠ y = ⎝⎞⎛⎠ y = ⎝⎞⎛⎠ y = ⎝12−411−311−3⎞⎠⎞⎠⎞⎠C<strong>et</strong>te métho<strong>de</strong> se décompose en trois actions principales :– la recherche d’un pivot (la partie la plus difficile quand la première variable a pourcoefficient 0 dans la première équation non traitée)– l’élimination d’une variable dans les lignes suivantes (à partir du pivot choisi précé<strong>de</strong>mmment)– permutation <strong>de</strong>s équations le cas échéantEn utilisant l’écriture matricielle du système (E), on peut écrire une fonction qui appliquela métho<strong>de</strong> <strong>de</strong> Gauss au couple (A, y). Vous trouverez c<strong>et</strong>te fonction (qui sera à compléterdans l’exercice qui suit) sur le serveur sous le nom Gauss.sce. Lisez l’<strong>algorithme</strong><strong>et</strong> faites apparaître les différentes parties mentionnées ci-<strong>de</strong>ssus, puis faites l’exercice ci<strong>de</strong>ssous.Exercice 4 :1. Écrire la fonction Scilab permutation(A, y, i, l) qui permute les lignes i <strong>et</strong> l dusystème.2. Écrire la fonction Scilab elimination(A, y, i, j) qui élimine la variable x j <strong>de</strong>s lignesi + 1 à p.3. Tester la fonction obtenue en comparant le résultat donné par linsolve(A,-y)avant <strong>et</strong> après l’appel à la fonction Gauss(A,y) avec un jeu <strong>de</strong> “données tests”aléatoires :-->A=int(5*rand(4,4)-2),x=rand(5*rand(4,1)-2),y=A*x//jeu <strong>de</strong> test-->[B,z]=Gauss(A,y)-->linsolve(A,-y)//r\’esolution avant la m\’<strong>et</strong>ho<strong>de</strong> <strong>de</strong> Gauss-->linsolve(B,-z)//r\’esolution apr\‘es la m\’<strong>et</strong>ho<strong>de</strong> <strong>de</strong> Gauss3
Exercice 5 :1. Écrire une fonction scilab qui résoud un système linéaire à l’ai<strong>de</strong> <strong>de</strong> l’<strong>algorithme</strong><strong>de</strong> Gauss.2. Écrire une fonction scilab qui résoud un système linéaire à l’ai<strong>de</strong> <strong>de</strong> l’<strong>algorithme</strong><strong>de</strong> Gauss-Jordan.3. Écrire une fonction scilab qui calcule le déterminant d’une matrice carrée à l’ai<strong>de</strong><strong>de</strong> l’<strong>algorithme</strong> <strong>de</strong> Gauss.4. Écrire une fonction scilab qui calcule le rang d’une matrice à l’ai<strong>de</strong> <strong>de</strong> l’<strong>algorithme</strong><strong>de</strong> Gauss.5. Écrire une fonction scilab qui calcule l’inverse d’une matrice carrée à l’ai<strong>de</strong> <strong>de</strong>l’<strong>algorithme</strong> <strong>de</strong> Gauss-Jordan.4