Vous êtes sur la page 1sur 6

Alexis Hrault

CSC106

Rsolution des systme linaires par des mthodes directes et factorisation de matrices
Objectifs savoir programmer la : rsolution des systmes triangulaires (suprieurs et infrieurs) mthode du pivot de Gauss pour la rsolution des systmes linaires mthode de Gauss-Jordan pour le calcul de linverse dune matrice factorisation LU dune matrice factorisation de Cholesky dune matrice factorisation QR dune matrice Exercice 1. Systmes triangulaires On considre le systme Ax = b avec A Mn (R) triangulaire infrieure, x, b Rn . La procdure qui consiste a dterminer les inconnues de proche en proche partir de x1 sappelle forward substitution. 1. Ecrire lalgorithme correspondant. 2. Dterminer sa complexit algorithmique. 3. Programmer cet algorithme en Scilab en crivant une fonction dentte f u n c t i o n [ x , s o l ]= fsub (A, b) o A et b sont les coecients et le second membre du systme rsoudre, x la solution (si elle existe) et sol un indicateur valant 1 si la solution est unique, 0 sil ny a pas de solution et -1 sil y a une innit de solutions (dans les deux derniers cas x sera initialis Nan). 4. Lorsque A est triangulaire infrieure, on rsout de proche en proche partie de xn . Cette procdure sappelle backward substitution". Ecrire une fonction bsub correspondant ce cas et ayant les mmes caractristiques que fsub. 5. Testez vos deux fonctions pour n 4 et dans les trois cas de gure possibles (solution est unique, pas de solution, une innit de solutions). Indications 1. Commandes Scilab utiles : 1

Alexis Hrault

CSC106

rand ( n ,m) : cre une matrice n lignes m colonnes coecients alatoires compris entre 0 et 1 l i n s o l v e (A, b ) : rsout le systme linaire Ax b = 0 t r i l (A) / t r i u (A) : renvoie la partie triangulaire infrieure/suprieure de A Exercice 2. Mthode du Pivot de Gauss On considre le systme Ax = b avec A Mn (R), x, b Rn . La mthode du pivot de Gauss consiste transformer le systme prcdent en un systme triangulaire suprieur quivalent en eectuant seulement les oprations suivantes : intervertir deux lignes du systme (Li <=> Lj ) remplacer une ligne par une combinaison linaire de cette ligne et des autres (Li => i Li + j Lj , i = 0)
i=j

Soit par exemple a1,1 a1,2 a2,1 a2,2 A= . . . an,1 an,2

a1,n a2,n . .. . . . an,n ai,1 L1 a1,1 est de la forme :

avec a1,1 = 0. En eectuant, pour 2 i n, les oprations Li => Li on se ramne au systme a1,1 a1,2 0 a(1) 2,2 A(1) = . . . 0
(1)

quivalent A(1) x = b ou A(1) a1,n (1) a2,n . .. . . .


(1)

an,2 an,n

Le coecient a1,1 sappelle le pivot. Il est ais de voir que si lon rpte cette opration successivement sur toute les colonnes lon aboutit un systme quivalent triangulaire suprieur. 1. Ecrire lalgorithme de la mthode du pivot de Gauss. 2. Dterminer sa complexit algorithmique. 3. Programmer cet algorithme sous forme dune fonction Scilab dentte f u n c t i o n [A, b]= pivotgauss (A, b) renvoyant la matrice triangulaire suprieure du systme quivalent obtenu ainsi que le second membre associ. Vous naurez besoin daucun stockage intermdiaire i.e. A et b seront modis au fur et mesure. 2

Alexis Hrault

CSC106

4. Ecrire une fonction dentte f u n c t i o n [ x , s o l ]=gauss (A, b) permettant de rsoudre un le systme Ax = b en utilisant les fonctions pivotgauss et bsub. 5. Testez votre fonction gauss pour n 4 et dans les trois cas de gure possibles (solution est unique, pas de solution, une innit de solutions). 6. Testez votre code dans le cas suivant : 8 10 1 1 1 1 1 ,b = 1 A = 108 1 1 0 1 Que se passe-t-il ? Modier votre fonction pivotgauss an dobtenir une solution correcte. Exercice 3. Mthode de Gauss-Jordan Le calcul de linverse dune matrice carre A dordre n peut se faire trs simplement partir de lalgorithme du pivot de Gauss. En eet trouver les coecients de X inverse de A revient rsoudre les n systmes linaires AX = I. Dans la mesure o ils ont tous les mmes coecients (ceux de la matrice A) et que le pivot ne dpend que de A on les rsout simultanment pour n second membres dirents (qui ne sont autres que les colonnes de lidentit I). En utilisant la mthode du pivot de Gauss, on part de la situation suivante a1,1 a1,2 a1,n 1 0 0 a2,1 a2,2 a2,n 0 1 0 . . . .. .. . . . . . . . . . . . an,1 an,2 an,n 0 0 1 pour aboutir 1 0 0 1 . .. . . . 0 0

0 x1,1 x1,2 0 x2,1 x2,2 . . . . . . 1 xn,1 xn,2

x1,n x2,n . .. . . . xn,n

Les deux seules dirences sont que, pour chaque colonne, on limine les termes sous le pivot mais aussi dessus et que lon normalise pour obtenir des 1 sur la diagonale. 1. Ecrire lalgorithme de Gauss-Jordan. 2. Dterminer sa complexit algorithmique. Pourquoi nutilise-t-on pas la mthode de Gauss-Jordan pour rsoudre les systmes linaires ? 3

Alexis Hrault

CSC106

3. Programmer la fonction f u n c t i o n [X, s o l ] = gaussjordan (A) renvoyant linverse X de A (si elle existe) et un indicateur, sol, valant 1 si linverse existe et 0 sinon (dans ce cas linverse sera initialise Nan). 4. Testez votre code pour n 4 et dans les deux cas de gure possibles (matrice inversible et matrice non inversible). Exercice 4. Factorisation LU Th. Soit A une matrice carre inversible dont tous les mineurs principaux sont non nuls, alors il existe un unique matrice L, triangulaire infrieure et nayant que des 1 sur sa diagonale, et une unique matrice U , triangulaire suprieure telles que A = LU . Ce rsultat dcoule immdiatement de la mthode du pivot de Gauss. En reprenant les notations de lexercice 2 et en posant A(0) = A, on constate que lon a A(1) = L1 A(0) o L1 est la matrice : 1 0 0 a2,1 1 a1,1 L1 = . .. . . . . . . an,1 0 1 a1,1 En rptant cette opration il dcoule immdiatement que : A = L1 A(1) = L1 L1 A(2) = ... = L1 L1 ...L1 A(n1) 1 1 2 1 2 n1 Linverse dune matrice triangulaire infrieure ainsi que le produit de deux matrices triangulaires infrieures tant aussi triangulaires infrieures on a immdiatement L = L1 L1 ...L1 et U = A(n1) . 1 2 n1 (k1) Bien entendu cette algorithme ne fonctionne que si les pivots ak,k = 0 pour 1 k n. Cest eectivement le cas si les mineurs principaux de A sont non nuls. Si A est suppose simplement inversible il sut deectuer une permutation de ligne chaque fois que lon rencontre un pivot nul. On aboutit alors au rsultat suivant : Th. toute matrice inversible A peut scrire sous la forme P A = LU , o P est une matrice de permutation. Bien entendu la matrice P nest pas unique mais la dcomposition de P A en LU lest. 4

Alexis Hrault

CSC106

1. Ecrire lalgorithme de la factorisation LU dune matrice sans pivotage. 2. Quelle est sa complexit algorithmique ? 3. Programmer la fonction f u n c t i o n [ L,U, s o l ] = LU(A) renvoyant la factorisation LU (si elle existe) et un indicateur sol valant 0 si lon a rencontr un pivot nul et 1 sinon. 4. Tester votre fonction avec direntes matrice et avec 1 1 1 A = 2 2 5 4 6 8 5. Programmer la fonction f u n c t i o n [ L,U,P, s o l ] = LUP(A) prenant en compte le pivotage et renvoyant en plus des matrice L et U la matrice de permutation P . Dans ce cas sol vaudra 0 si A nest pas inversible et 1 sinon. Vous choisirez la stratgie de pivotage assurant la meilleure stabilit numrique. Exercice 5. Factorisation de Cholesky Th. Soit A une matrice symtrique (ou Hermitienne) dnie positive, alors il existe une matrice L, triangulaire infrieure telle que A = LLT . Si on impose aux coecients diagonaux de L dtre positifs alors la dcomposition est unique. 1. Quelle relation lie les coecients de L ceux de A ? En dduire lalgorithme de la factorisation de Cholesky dune matrice symtrique dnie positive. 2. Quelle est sa complexit algorithmique ? 3. Programmer la fonction f u n c t i o n [ L, s o l ] = Cholesky (A) renvoyant la matrice L (si elle existe) et un indicateur sol valant -1 si A nest pas symtrique (ou Hermitienne), 0 si A nest pas dnie positive et 1 sinon. 4. Tester votre fonction avec direntes matrices (relles, complexes, symtriques (Hermitienne) ou non, dnies positives ou non) pour n 4. Exercice 6. Factorisation QR Th. Soit A Mm,n (R) avec alors, il existe une matrice orthogonale Q Mm,m (R) et une matrice triangulaire suprieure R Mn,n (R) telles que : A=Q R 0 5

Alexis Hrault

CSC106

Il existe plusieurs mthodes pour obtenir les matrices Q et R (Householder, Givens, Schmidt). Nous implmenterons ici la mthode de Householder vue en ED, rappele ci dessous. Soit x Rm , = sign(x1 )||x|| ( est pris du signe de x1 pour des raisons de stabilit numrique) et (e1 , ..., em ) la base canonique de Rm . Si x nest pas colinaire e1 on dnit la matrice Q par : uut Q=I ||u||2 avec u = xe1 . Q est une matrice orthogonale, dite matrice de Houselholder associe u et on a : Qx = (, 0, ..., 0)t Soit Q1 la matrice de Householder associe la premire colonne de A, alors : 0 Q1 A = . . . A2 0 En rptant cette procdure sur les matrices Aj on aboutit aprs k = min(m 1, n) itrations la matrice triangulaire suprieure : R = Qk Qk1 ...Q1 A Les matrices Qj tant orthogonales et symtrique on a alors A = QR avec Q = Q1 Q2 ...Qk 1. Ecrire lalgorithme de la dcomposition QR dune matrice laide de la mthode de Householder. 2. Quelle est sa complexit algorithmique ? 3. Programmer la fonction f u n c t i o n [Q,R] = QR(A) renvoyant la dcomposition QR de A. 4. Tester votre fonction avec direntes matrices. 5. Adapter la fonction prcdente pour quelle dcompose aussi les matrices complexes.