Sunteți pe pagina 1din 7

Laborator 3

Calculul factorizrilor LU. a Calculul inversei i al s determinantului


3.1 Tema

Calculul factorizrilor LU ale unei matrice i utilizarea lor rezolvarea numeric a s n a a sistemelor liniare determinate a calculului inversei i a determinantului. Calculul s factorizrii Cholesky pentru cazul particular, dar important, al matricelor simetrice a pozitiv denite.

3.2
3.2.1

Preliminarii
Factorizri LU a

multe situatii, se dovedete a convenabil de a exprima o matrice dat sub forma In s a unui produs de dou matrice triunghiulare. a Denitia 3.1 Fie dat A Rnn . Dac exist o matrice inferior triunghiular a a a a L Rnn i o matrice superior triunghiular U Rnn astfel at s a nc A = LU, atunci expresia de mai sus se numete factorizarea LU a matricei A. s Denitia 3.2 Dac A Rnn , atunci expresia a A = LDU, unde L Rnn este inferior triunghiular unitar, U Rnn este superior triunghia a nn este o matrice diagonal, se numete factorizarea LDU ular unitar i D R a as a s a matricei A.

LABORATOR 3. FACTORIZARI LU Conditile de existenta i unicitate a factorizrii LDU sunt date de: s a

Teorema 3.3 O matrice A Rnn admite factorizare LDU unic dac i numai a as dacf toate submatricele lider principale A [k] , k = 1 : n 1, sunt nesingulare. a Factorizrile practice LU asociaz matricea diagonal D din factorizarea LDU: a a a cu matricea U , denind aa numita factorizare Doolittle A = LU , unde L este s inferior triunghiular unitar i U este superior triunghiular; a as a sau cu matricea L, denind factorizarea Crout A = LU , unde L este inferior triunghiular i U superior triunghiular unitar. as a a Din teorema 3.3 rezult c ambele factorizri, Doolittle i Crout, exist i sunt a a a s as [k] , k = 1 : n 1, sunt toate unice dac i numai dac submatricele lider principale A as a nensingulare. Intruct algoritmul de triangularizare prin eliminare gaussian fr pivotare cala a aa culeaz implicit i factorizarea Doolittle, mai jos va prezentat numai algoritmul a s Crout de factorizare LU.

3.2.2

Factorizarea Cholesky

Un caz special important de factorizare LU care poate calculat cu un algoritm a ecient i sigur se refer la matrice pozitiv denite. s a O matrice simetric (A = AT ) A se numete pozitiv denit dac pentru orice a s a a n avem xT Ax > 0. vector nenul x R Orice submatrice principal a unei matrice pozitiv denite este pozitiv denit. a a Prin urmare, toate submatricele lider principale ale unei matrice simetrice pozitiv denite i matricea ai sunt nesingulare. s nss Baza teoretic pentru descompunerea Cholesky este dat de urmtorul rezultat. a a a Teorema 3.4 Pentru orice matrice simetric pozitiv denit A R nn , exist o a a a matrice inferior triunghiular unic L Rnn cu toate elementele diagonale pozitive a a astfel at: nc A = LLT , care se numete factorizarea Cholesky a matricei A. s Factorizrile LU sunt utile multe probleme de calcul, cum sunt, de exemplu, a n rezolvarea sistemelor liniare, calculul inversei sau al determinantului unei matrice. Presupunnd c matricea dat A Rnn admite o factorizare LU (altfel se a a a impune utilizarea strategiilor de pivotare) vom indica aici numai modalitatea de rezolvarea a sistemelor liniare Ax = b. Celelalte probleme sunt tratate sectiuni n distincte. Solutia sistemului liniar Ax = b se poate calcula folosind urmtoarea schem de a a calcul:

3.2. PRELIMINARII 1. A = LU (se calculeaz factorizarea LU) a 2. Se rezolv sistemul inferior triunghiular Ly = b a 3. Se rezolv sistemul superior triunghiular U x = y a

3.2.3

Algoritmi

Rnn

Algoritm 3.5 (CROUT factorizarea Crout) (Dat matricea A a [k] , k = 1 : n 1, nesingucu toate submatricele lider principale A lare, acest algoritm calculeaz factorizarea Crout A = LU . Elementele a matricelor L i U suprascriu elementele corespondente ale lui A (mai s putin elementele diagonale ale lui U , care sunt egale cu 1).) ( 0. ai1 li1 = ai1 , i = 1 : n) 1. pentru j = 2 : n 1. a1j u1j = a1j /l11 2. pentru k = 2 : n 1. pentru i = k : n k1 1. aik lik = aik l=1 lil ulk 2. dac k = n atunci stop a 3. pentru j = k + 1 : n k1 1. akj ukj = akj l=1 lkl ukj /lkk

Pentru a evita necesitatea ca A[k] , k = 1 : n 1, s e nensingulare, se poate a utiliza numai pivotarea liniilor care pot introduse dup instructtiunea 2.1 a algoa ritmului de mai sus. Algoritm 3.6 (CHOL factorizarea Cholesky) (Dat o matrice sia metric A Rnn , acest algoritm stabilete dac matricea este pozitiv a s a denit. Dac da, atunci suprascrie triunghiul inferior al lui A cu maa a tricea L din factorizarea Cholesky A = LLT .) 1. dac a11 0 then a 1. Print(A nu este pozitiv denit) a 2. stop 2. a11 l11 = a11 3. pentru i = 2 : n 1. ai1 li1 = ai1 /l11 4. pentru k = 2 : n k1 2 1. akk l=1 lkl 2. dac 0 atunci a 1. Print(A nu este pozitiv denit) a 2. stop 3. akk lkk = 4. dac k = n atunci stop a 5. pentru i = k + 1 : n k1 1. aik lik = aik l=1 lil lkl /lkk

LABORATOR 3. FACTORIZARI LU

Algoritm de mai sus furnizeaz cel mai bun test al pozitiv denirii unei matrice. a

3.2.4

Inversarea matricelor nesingulare

Un mod ecient de calcul al inversei unei matrice nesingulare apeleaz la eliminarea a gaussian cu pivotare partial (algoritmul GPP). Un alt mod, la fel de ecient de a a a calcula inversa const utilizarea unei factorizri LU (eventual cu pivotare). De a n a asemenea, pentru calculul inversei avem nevoie de algoritmii de inversare a matricelor triunghiulare. Inversarea matricelor triunghiulare Se poate arta c inversa unei matrice triunghiulare nesingulare este o matrice tria a unghiular de acelai tip iar calculul ei se poate face rezolvnd un set de sisteme a s a triunghiulare de diferite dimensiuni dar de acelai tip. Dac se respect o ordine s a a adecvat de calcul elementele matricei inverse pot suprascrie elementele matricei a date pe msur ce sunt calculate. Trimitand studentul la cursul predat sau publicat a a pentru detalii, ne mrginim s prezentm direct algoritmii de inversare. a a a Algoritm 3.7 (LINV) (Dat o matrice inferior triunghiular nesina a nn , acest algoritm suprascrie L cu inversa sa.) gular L R a 1. pentru j = 1 : n 1. ljj xjj = 1/ljj 2. dac j = n atunci stop a 3. pentru i = j + 1 : n i 1. lij xij = k=j+1 lik xkj /lii Numrul de opi necesar este NLIN V = a n2 /2 locatii format virgul mobil. n a a
n3 3 ,

iar memoria ocupat este MLIN V a

Algoritm 3.8 (UINV) (Dat o matrice superior triunghiular nea a nn , acest algoritm suprascrie U cu inversa sa.) singular U R a 1. pentru j = n : 1 : 1 1. ujj xjj = 1/ujj 2. dac j = 1 atunci stop a 3. pentru i = j 1 : 1 : 1 j 1. uij xij = k=i+1 uik xkj /uii Ca i cazul inferior triunghiular, NU IN V n3 /3 i MU IN V n2 /2. s n s

3.2. PRELIMINARII Inversarea matricelor utiliznd GP P a

Dac A este o matrice real nesingular n n, atunci eliminarea gaussian cu piva a a a otare partial produce o matrice superior triunghiular U : a a Mn1 Pn1 . . . M1 P1 A = U, unde Mk sunt matrice inferior triunghiulare elemntare i Pk sunt matrice de pers mutare elementare. Avem X A1 = U 1 Mn1 Pn1 . . . M1 P1 i, deci, inversa matricei A poate calculat cu schema s a 1. [U, M, p] = GP P (A) 2. X = U IN V (U ) 3. pentru k = n 1 : 1 : 1 1. X XMk 2. X XPk careia corespunde urmtorul algoritm ce calculeaz inversa pe loc, peste matricea i a a A. Algoritm 3.9 (INV GPP) (Dat o matrice nesingular A Rnn , a a acest algoritm suprascrie A cu inversa sa, A1 .) 1. [U, M, p] = GP P (A) {U i M suprascriu A} s 2. A X = U IN V (U ) {se modic numai triunghiul superior al lui A} a 3. pentru k = n 1 : 1 : 1 1. for i = k + 1 : n 1. mi ik {salvarea multiplicatorilor} 2. pentru i = 1 : k 1. aik aik n l=k+1 ail ml 3. for i = k + 1 : n 1. aik n l=k+1 ail ml 4. dac p(k) = k atunci a 1. pentru i = 1 : n 1. aik ai,p(k) Cea de a doua metod de inversare pe care o prezentm se bazeaz pe factorizarea a a a LU. Inversarea matricelor utiliznd factorizri LU a a Dac matricea nesingular A admite o factorizare LU , atunci a a A1 = U 1 L1 , deci o procedur de inversare poate urmtoarea: a a

6 1. 2. 3. 3.

LABORATOR 3. FACTORIZARI LU A = LU (se calculeaz factorizarea LU) a U X = U 1 L Y = L1 A1 XY

3.2.5

Calculul determinantului

Algoritmii de eliminare gauian cu pivotare GP P ssii GCP sunt utile pentru un s a calcul ecient al determinantului unei matrice. Baza este dat de cunoscuta propria etate conform creia a det(A B) = det(A) det(B) care rmne adevrat pentru orice numr nit de matrice ptrate. De asemenea, a a a a a a nn este o matrice triunghiular, atunci dac A R a a
n

det(A) =
i=1

aii .

sfrit permutarea a dou linii sau a dou coloane schimb semnul determinantului In a s a a a sau, echivalent, dac P este o matrice de permutare elementar, atunci a a det(P ) = 1. Matricele inferior triunghiulare elementare Mk , k = 1 : n 1, au det(Ms ) = 1 i, s deci,
n

det(A) = (1)k det(U ) = (1)k


i=1

uii ,

unde k n 1 este numrul matricelor de permutare elementare proprii (i.e. P = a In ). Algoritmul corespunztor este: a Algoritm 3.10 (DET) (Dat o matrice A Rnn , acest algoritm a calculeaz determinantul matricei folosind reducerea gaussian cu piva a otare partial la forma triunghiular.) a a 1. [U, M, p] = GP P (A) 2. det 1 3. pentru k = 1 : n 1. det det ukk 4. pentru k = 1 : n 1 1. dac p(k) = k atunci a 1. det det Dac apelm la o factorizare LU, atunci avem, evident, a a
n n

det(A) = det(LU ) = det(L) det(U ) =

lii
i=1 i=1

uii .

3.3. SARCINI DE LUCRU

Astfel, folosind, de exemplu factorizarea Crout, determinantul = det(A) se poate calcula cu schema: 1. A = LU (se calculeaz factorizarea Crout) a 2. = n lii i=1

3.3
3.3.1

Sarcini de lucru
A. In laborator

1. Se elaboreaz i editeaz programele MATLAB pentru implementarea algoritas a milor de factorizare Crout i Cholesky i se testeaz corectitudinea algoritmilor s s a i programelor pentru matrice cu elemente aleatoare de ordin 7 i 25. s s 2. Se scriu programele de rezolvare a unui sistem liniar cu ajutorul factorizrii a Crout i, cazul unei matrice a coecientilor pozitiv denite, cu ajutorul s n factorizrii Cholesky, folosind functiile proprii de rezolvare a sistemelor tria unghiulare. Se testeaz aceste programe pentru sisteme de 7 i 25 de ecuatii a s cu 7, respectiv 25, necunoscute. 3. Se editeaz programul MATLAB pentru implementarea algoritmului de ina versare a unei matrice folosind GPP-ul propriu, se testeaz corectitudinea a rezultatelor obtinute pentru matrice cu elemente aleatoare de ordin 7 i 25, s comparnd cu rezultatul oferit de functia MATLAB inv. a Indicatii. Pentru crearea unor matrice pozitiv denite se poate folosi secventa. 1. A = rand(n) 2. A = A A

3.3.2

B. Acas a

1. Se va scrie un program MATLAB pentru calculul determinantului unei matrice folosind GPP i factorizarea LU i compararea rezultatelor oferite de cele dou s s a metode pentru matrice cu elemente aleatoare de ordin 7 i 100. Comparati s rezultatele dv. cu rezultatul oferit de functia MATLAB det. 2. Se consider dat o matrice superior Hessenberg H. Se cer programe MATLAB a a eciente pentru calculul factorizrii Crout, calculul inversei i al determinana s tului lui H. 3. Se consider date o matrice tridiagonal pozitiv denit T Rnn i un veca a a s tor b Rn . Se cer programe MATLAB eciente pentru calculul factorizrii a Cholesky, calculul inversei i al determinantului lui T , precum i pentru res s zolvarea sistemului T x = b.