Você está na página 1de 4

Universit Ren Descartes e e UFR de mathmatiques et informatique e Mthode de Gauss-Jordan e Variante de la mthode de Gauss (gauss1): e `me etape, on combine

toutes les lignes e ` la k a (sauf la ligne k) avec la ligne k (au lieu de ne le faire que pour les lignes dindice suprieur ` e a k) On fait ainsi appara tre des 0 sur toute la colonne (k) sauf au niveau du pivot akk Exemple : 8 2 1 4 A = 3 3 5 B = 14 16 4 5 2 Mthodes numriques 2003/2004 - D.Pastre e e licence de mathmatiques et licence MASS e

chapitre 2

Mthode de Gauss-Jordan e Calcul de linverse dune matrice

1 1/2 2 4 ligne 1 /2 A(1) = 0 3/2 1 2 ligne 2 - 3 ligne 1 0 3 6 0 ligne 3 - 4 ligne 1 ligne 2 / 3 2 1 0 7/3 10/3 ligne 1 - 1 ligne 2 2 (2) = 0 1 2/3 A 4/3 4 0 0 4 ligne 3 - 3 ligne 2

a11 a12 a13 a14 A = a21 a22 a23 a24 a31 a32 a33 a34
1 a12 a13 a14 A(2) = 0 a(2) a(2) a(2) 24 22 23
(2) (2) (2)

0 a32

(2)

a33

(2)

a34

(2)

1 0 a13 a14 (3) = A 0 1 a(3) a(3) 23 24

(3)

(3)

0 0 a33

(3)

a34

(3)

ligne 3 / 4 1 0 0 1 A(3) = 0 1 0 2 0 0 1 1

7 ligne 1 + 3 ligne 3

ligne 2 - 2 ligne 3 3

1 0 0 a14 A(4) = 0 1 0 a(4) 24 (4) 0 0 1 a34

(4)

On a directement les racines dans la 4e colonne.

Les solutions sont dans A(n+1)(:, n+1) = B (n+1). Il ny a donc pas de phase de remonte. e Mais on fait plus doprations. e
4

Algorithme Comme prcdemment pour : e e - recheche du pivot (non nul ou max) - nouvelle ligne k dirent pour : e - nouvelles lignes i pour k = 1 ` n a recherche du pivot (non nul ou max) change ventuel de lignes e e {le pivot akk = 0} division de la ligne k par akk pour i = 1 ` n sauf k, a retrancher ` la ligne i a la nouvelle ligne k multiplie par aik e (pour les colonnes de k (ou k + 1) ` n a
e les solutions sont dans la (n + 1)`me colonne (xi = ai,n+1)
5 6

Complexit e Le nombre doprations est de lordre de e 3 au lieu de 2n3 n 3 A vrier en exercice. e Donc moins intressant que lalgorithme de e Gauss. Mais application intressante pour le calcul de e linverse dune matrice.

Calcul de linverse dune matrice La formule thorique (A1)ij = e est inutilisable pratiquement. On utilise la proprit suivante : e e
0 0 e vecteur colonne de A1 est X = A1 ... le j 1 j ... 0 0 0 ... et est donc solution du syst`me AXj = 1 e ... 0
cof acteur(aij ) dt(A) e

Calcul A

Exemple
1 4 1 0 0 3 5 0 1 0 5 2 0 0 1 1/2 2 1/2 0 0 3/2 1 3/2 1 0 3 6 2 0 1 0 7/3 1 1/3 0 1 2/3 1 2/3 0 0 4 1 2 1 0 0 19/12 3/2 7/12 1 0 7/6 1 1/6 0 1 1/4 1/2 1/4 19 18 7 1 14 12 2 12 3 6 3

a11 a12 a13 1 0 0 2 a21 a22 a23 0 1 0 3 a31 a32 a33 0 0 1 4 1 a(2) a(2) b(2) 0 0 1 13 12 11 0 a(2) a(2) b(2) 1 0 0 21 23 22 (2) (2) (2) 0 0 a32 a33 b31 0 1 1 0 a(3) b(3) b(3) 0 1 12 11 13 0 1 a(3) b(3) b(3) 0 0 22 21 23 0 0 0 a(3) b(3) b(3) 1 32 31 33 1 0 0 b(4) b(4) b(4) 1 13 12 11 0 1 0 b(4) b(4) b(4) 0 23 22 21 (4) (4) (4) 0 b b 0 0 1 b
31 32 33

On va rsoudre les n syst`mes en mme temps e e e par la mthode de Gauss-Jordan e 1 0 0 1 0 0 a A 0 1 0 conduira ` 0 1 0 X1 X2 X3 0 0 1 0 0 1 1 = X et A 1 X2 X3


7

A1

Vrier que A A1=I e La vrication est plus facile que le calcul ! e Elle permet de trouver une erreur ventuelle ou dtre e e sr que le calcul est correct. u
8

La moiti de lespace utilis est inutile. On e e nutilisera quune matrice et on rangera au fur et ` mesure les nouvelles colonnes de B ` la a a place des colonnes de A devenues inutiles. A
a11 a21 a31 b(2) 11 (2) b21 b(2) 31 (3) b11 (3) b21 b(3) 31 b(4) 11 b(4) 21 b(4) 31

Premier algorithme Calcul de linverse de la matrice A. A devient la matrice identit. e Le rsultat est dans A(: , n + 1 : 2n). e A(n + 1 : 2n, :) = diag(ones(1, n)) {identit} e ou A = [A, diag(ones(1, n))] perm = 1 : n {pour tout i perm(i) = i} {perm servira ` mmoriser les permutations} a e {perm(i) = l signie quil y a eu permutation des lignes i et l} pour k = 1 ` n a recherche du pivot maximal amax = 0; l = k; pour i = k ` n, si abs(A(i, k)) > amax a alors l = i amax = abs(A(i, k)) si amax = 0 alors (matrice singuli`re, e pas dinverse, retour) si l = k alors permuter les lignes l et k entre k et n + k 1 permuter perm(l) et perm(k)

Exemple
a13 2 1 4 a23 3 3 5 a33 4 5 2 a(2) 1/2 1/2 2 13 a(2) 3/2 3/2 1 23 3 6 2 a(2)
33 (3) a13 a(3) 23 a(3) 33

a12 a22 a32 a(2) 12 a(2) 22 a(2) 32


(3) b12 (3) b22 b(3) 32

1 1/3 7/3 2/3 1 2/3 1 2 4

b(4) 12 (4) b22 (4) b32 A1

b(4) 19/12 3/2 7/12 13 (4) 7/6 1 1/6 b23 1/4 1/2 1/4 b(4) 33 19 18 7 1 14 12 2 12 3 6 3
9

10

Meilleur algorithme p = A(k, k) {cest le pivot} Calcul de linverse de la matrice A. Le rsultat est dans A. e (Pour conserver la valeur initiale de A on fera une sauvegarde avant les calculs ou on crira e une fonction inverse(A) qui renvoie linverse.) perm = 1 : n {perm(i) = i} {perm servira ` mmoriser les permutations a e {perm(i) = l signie quil y a eu permutation des lignes i et l} pour k = 1 ` n a recherche du pivot maximal amax = 0; l = k; pour i = k ` n, si abs(A(i, k)) > amax a alors l = i amax = abs(A(i, k)) si amax = 0 alors (matrice singuli`re, e pas dinverse, retour) si l = k alors permuter les lignes l et k permuter perm(l) et perm(k)
11 12

{nouvelle ligne k} A(k, [k : n + k]) = A(k, [k : n + k])/p {pour k : n, cest A(k),} {pour n + 1 : n + k cest les seconds membres} {nouvelles lignes i} pour i = 1 ` n sauf k a A(i, [k : n + k]) = A(i, [k : n + k]) A(i, k) A(k, [k : n + k]) {permutations ventuelles des colonnes} e pour j = 1 ` n a si perm(j) = j alors {Attention, permuter une seule fois} soit k tel que perm(k) = j permuter colonnes n + k et n + j perm(k) = perm(j)

p = A(k, k) {cest le pivot}

{nouvelle ligne k} A(k, [1 : k 1, k + 1 : n]) = A(k, [1 : k 1, k + 1 : n])/p {pour k + 1 : n, cest A(k), pour 1 : k 1 cest les seconds membres} {nouvelles lignes i} pour i = 1 ` n sauf k a A(i, [1 : k 1, k + 1 : n]) = A(i, [1 : k 1, k + 1 : n]) - A(i, k) A(k, [1 : k 1, k + 1 : n]) {colonne k (seconds membres)} A([1 : k 1, k + 1 : n], k) = A([1 : k 1, k + 1 : n], k)/p {0 aik /p} A(k, k) = 1/p {permutations ventuelles des colonnes} e pour j = 1 ` n a si perm(j) = j alors {Attention, permuter une seule fois} soit k tel que perm(k) = j permuter colonnes k et j perm(k) = perm(j)
13

Você também pode gostar