Sunteți pe pagina 1din 7

Laborator 3

Calculul factoriz
arilor LU.
Calculul inversei si al
determinantului
3.1

Tema

Calculul factoriz
arilor LU ale unei matrice si utilizarea lor n rezolvarea numeric
a
a sistemelor liniare determinate a calculului inversei si a determinantului. Calculul
factoriz
arii Cholesky pentru cazul particular, dar important, al matricelor simetrice
pozitiv definite.

3.2
3.2.1

Preliminarii
Factoriz
ari LU

In multe situatii, se dovedeste a fi convenabil de a exprima o matrice dat


a sub forma
unui produs de dou
a matrice triunghiulare.
Definitia 3.1 Fie dat
a A Rnn . Dac
a exist
a o matrice inferior triunghiular
a
nn
nn
LR
si o matrice superior triunghiular
aU R
astfel nc
at
A = LU,
atunci expresia de mai sus se numeste factorizarea LU a matricei A.
Definitia 3.2 Dac
a A Rnn , atunci expresia
A = LDU,
unde L Rnn este inferior triunghiular
a unitar
a, U Rnn este superior triunghinn
ulara unitar
a si D R
este o matrice diagonal
a, se numeste factorizarea LDU
a matricei A.


LABORATOR 3. FACTORIZARI
LU

Conditile de existent
a si unicitate a factoriz
arii LDU sunt date de:
Teorema 3.3 O matrice A Rnn admite factorizare LDU unic
a dac
a si numai
[k]
dac
af toate submatricele lider principale A , k = 1 : n 1, sunt nesingulare.
Factorizarile practice LU asociaz
a matricea diagonal
a D din factorizarea LDU:
cu matricea U , definind asa numita factorizare Doolittle A = LU , unde L este
inferior triunghiular
a unitar
a si U este superior triunghiular
a;
sau cu matricea L, definind factorizarea Crout A = LU , unde L este inferior
triunghiular
a si U superior triunghiular
a unitar
a.
Din teorema 3.3 rezult
a c
a ambele factoriz
ari, Doolittle si Crout, exist
a si sunt
unice dac
a si numai dac
a submatricele lider principale A[k] , k = 1 : n 1, sunt toate
nensingulare.
Intruc
at algoritmul de triangularizare prin eliminare gaussian
a f
ar
a pivotare calculeaz
a implicit si factorizarea Doolittle, mai jos va fi prezentat numai algoritmul
Crout de factorizare LU.

3.2.2

Factorizarea Cholesky

Un caz special important de factorizare LU care poate fi calculat


a cu un algoritm
eficient si sigur se refer
a la matrice pozitiv definite.
O matrice simetric
a (A = AT ) A se numeste pozitiv definit
a dac
a pentru orice
n
vector nenul x R avem xT Ax > 0.
Orice submatrice principal
a a unei matrice pozitiv definite este pozitiv definit
a.
Prin urmare, toate submatricele lider principale ale unei matrice simetrice pozitiv
definite si matricea ns
asi sunt nesingulare.
Baza teoretic
a pentru descompunerea Cholesky este dat
a de urm
atorul rezultat.
Teorema 3.4 Pentru orice matrice simetric
a pozitiv definit
a A Rnn , exist
a o
nn
matrice inferior triunghiular
a unic
aLR
cu toate elementele diagonale pozitive
astfel nc
at:
A = LLT ,
care se numeste factorizarea Cholesky a matricei A.
Factorizarile LU sunt utile n multe probleme de calcul, cum sunt, de exemplu,
rezolvarea sistemelor liniare, calculul inversei sau al determinantului unei matrice.
Presupun
and c
a matricea dat
a A Rnn admite o factorizare LU (altfel se
impune utilizarea strategiilor de pivotare) vom indica aici numai modalitatea de
rezolvarea a sistemelor liniare Ax = b. Celelalte probleme sunt tratate n sectiuni
distincte.
Solutia sistemului liniar Ax = b se poate calcula folosind urm
atoarea schem
a de
calcul:

3.2. PRELIMINARII

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

3.2.3

Algoritmi

Algoritm 3.5 (CROUT factorizarea Crout) (Dat


a matricea A
Rnn cu toate submatricele lider principale A[k] , k = 1 : n 1, nesingulare, acest algoritm calculeaz
a factorizarea Crout A = LU . Elementele
matricelor L si U suprascriu elementele corespondente ale lui A (mai
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
P
1. aik lik = aik k1
l=1 lil ulk
2. dac
a k = n atunci stop
3. pentru j = k + 1: n

P
1. akj ukj = akj k1
l=1 lkl ulj /lkk

Pentru a evita necesitatea ca A[k] , k = 1 : n 1, s


a fie nensingulare, se poate
utiliza numai pivotarea liniilor care pot fi introduse dup
a instructtiunea 2.1 a algoritmului de mai sus.
Algoritm 3.6 (CHOL factorizarea Cholesky) (Dat
a o matrice sinn
metric
aAR
, acest algoritm stabileste dac
a matricea este pozitiv
definit
a. Dac
a da, atunci suprascrie triunghiul inferior al lui A cu matricea L din factorizarea Cholesky A = LLT .)
1. dac
a a11 0 then
1. Print(A nu este pozitiv definit
a)
2. stop

2. a11 l11 = a11


3. pentru i = 2 : n
1. ai1 li1 = ai1 /l11
4. pentru k = 2 : n
P
2
1. akk k1
l=1 lkl
2. dac
a 0 atunci
1. Print(A nu este pozitiv definit
a)
2. stop

3. akk lkk =
4. dac
a k = n atunci stop
5. pentru i = k + 1 : n

P
1. aik lik = aik k1
l
l
/lkk
il
kl
l=1


LABORATOR 3. FACTORIZARI
LU

Algoritm de mai sus furnizeaz


a cel mai bun test al pozitiv definirii unei matrice.

3.2.4

Inversarea matricelor nesingulare

Un mod eficient de calcul al inversei unei matrice nesingulare apeleaz


a la eliminarea
gaussian
a cu pivotare partial
a (algoritmul GPP). Un alt mod, la fel de eficient de
a calcula inversa const
a n utilizarea unei factoriz
ari LU (eventual cu pivotare). De
asemenea, pentru calculul inversei avem nevoie de algoritmii de inversare a matricelor
triunghiulare.
Inversarea matricelor triunghiulare
Se poate arata c
a inversa unei matrice triunghiulare nesingulare este o matrice triunghiular
a de acelasi tip iar calculul ei se poate face rezolv
and un set de sisteme
triunghiulare de diferite dimensiuni dar de acelasi tip. Dac
a se respect
a o ordine
adecvat
a de calcul elementele matricei inverse pot suprascrie elementele matricei
date pe m
asur
a ce sunt calculate. Trimit
and studentul la cursul predat sau publicat
pentru detalii, ne m
arginim s
a prezentam direct algoritmii de inversare.
Algoritm 3.7 (LINV) (Dat
a o matrice inferior triunghiular
a nesingulara L Rnn , acest algoritm suprascrie L cu inversa sa.)
1. pentru j = 1 : n
1. ljj xjj = 1/ljj
2. dac
a j = n atunci stop
3. pentru i = j + 1 :n

Pi1
l
x
1. lij xij =
k=j ik kj /lii
Num
arul de flopi necesar este NLIN V =
2
n /2 locatii n format virgul
a mobil
a.

n3
3 ,

iar memoria ocupat


a este MLIN V

Algoritm 3.8 (UINV) (Dat


a o matrice superior triunghiular
a nesingular
a U Rnn , acest algoritm suprascrie U cu inversa sa.)
1. pentru j = n : 1 : 1
1. ujj xjj = 1/ujj
2. dac
a j = 1 atunci stop
3. pentru i = j 1 : 1 : 1

Pj
1. uij xij =
u
x
/uii
ik
kj
k=i+1
Ca si n cazul inferior triunghiular, NU IN V n3 /3 si MU IN V n2 /2.

3.2. PRELIMINARII
Inversarea matricelor utiliz
and GP P

Daca A este o matrice real


a nesingular
a n n, atunci eliminarea gaussian
a cu pivotare partial
a produce o matrice superior triunghiular
a U:
Mn1 Pn1 . . . M1 P1 A = U,
unde Mk sunt matrice inferior triunghiulare elemntare si Pk sunt matrice de permutare elementare. Avem
X A1 = U 1 Mn1 Pn1 . . . M1 P1
si, deci, inversa matricei A poate fi calculat
a cu schema
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 i corespunde urm
atorul algoritm ce calculeaz
a inversa pe loc, peste matricea
A.
Algoritm 3.9 (INV GPP) (Dat
a o matrice nesingular
a A Rnn ,
acest algoritm suprascrie A cu inversa sa, A1 .)
1. [U, M, p] = GP P (A) {U si M suprascriu A}
2. A X = U IN V (U ) {se modific
a numai triunghiul superior al lui A}
3. pentru k = n 1 : 1 : 1
1. for i = k + 1 : n
1. mi ik {salvarea multiplicatorilor}
2. pentru i = 1 : k
P
1. aik aik nl=k+1 ail ml
3. for i = k + 1 : n
P
1. aik nl=k+1 ail ml
4. dac
a p(k) 6= k atunci
1. pentru i = 1 : n
1. aik ai,p(k)
Cea de a doua metod
a de inversare pe care o prezent
am se bazeaz
a pe factorizarea
LU.
Inversarea matricelor utiliz
and factoriz
ari LU
Daca matricea nesingular
a A admite o factorizare LU , atunci
A1 = U 1 L1 ,
deci o procedur
a de inversare poate fi urm
atoarea:


LABORATOR 3. FACTORIZARI
LU

6
1.
2.
3.
3.

3.2.5

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

Calculul determinantului

Algoritmii de eliminare gausian


a cu pivotare GP P ssii GCP sunt utile pentru un
calcul eficient al determinantului unei matrice. Baza este dat
a de cunoscuta proprietate conform c
areia
det(A B) = det(A) det(B)
care r
am
ane adev
arat
a pentru orice num
ar finit de matrice p
atrate. De asemenea,
a, atunci
dac
a A Rnn este o matrice triunghiular
det(A) =

n
Y

aii .

i=1

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

n
Y

uii ,

i=1

unde k n 1 este num


arul matricelor de permutare elementare proprii (i.e. P 6=
In ). Algoritmul corespunz
ator este:
Algoritm 3.10 (DET) (Dat
a o matrice A Rnn , acest algoritm
calculeaz
a determinantul matricei folosind reducerea gaussian
a cu pivotare partial
a la forma triunghiular
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
a p(k) 6= k atunci
1. det det
Dac
a apel
am la o factorizare LU, atunci avem, evident,
det(A) = det(LU ) = det(L) det(U ) =

n
Y

i=1

lii

n
Y

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
a factorizarea Crout)
Qn
2. = i=1 lii

3.3

Sarcini de lucru

3.3.1

A. In laborator

1. Se elaboreaz
a si editeaz
a programele MATLAB pentru implementarea algoritmilor de factorizare Crout si Cholesky si se testeaz
a corectitudinea algoritmilor
si programelor pentru matrice cu elemente aleatoare de ordin 7 si 25.
2. Se scriu programele de rezolvare a unui sistem liniar cu ajutorul factoriz
arii
Crout si, n cazul unei matrice a coeficientilor pozitiv definite, cu ajutorul
factoriz
arii Cholesky, folosind functiile proprii de rezolvare a sistemelor triunghiulare. Se testeaz
a aceste programe pentru sisteme de 7 si 25 de ecuatii
cu 7, respectiv 25, necunoscute.
3. Se editeaz
a programul MATLAB pentru implementarea algoritmului de inversare a unei matrice folosind GPP-ul propriu, se testeaz
a corectitudinea
rezultatelor obtinute pentru matrice cu elemente aleatoare de ordin 7 si 25,
compar
and cu rezultatul oferit de functia MATLAB inv.
Indicatii. Pentru crearea unor matrice pozitiv definite 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 si factorizarea LU si compararea rezultatelor oferite de cele dou
a
metode pentru matrice cu elemente aleatoare de ordin 7 si 100. Comparati
rezultatele dv. cu rezultatul oferit de functia MATLAB det.
2. Se consider
a dat
a o matrice superior Hessenberg H. Se cer programe MATLAB
eficiente pentru calculul factoriz
arii Crout, calculul inversei si al determinantului lui H.
3. Se consider
a date o matrice tridiagonal
a pozitiv definit
a T Rnn si un vector b Rn . Se cer programe MATLAB eficiente pentru calculul factoriz
arii
Cholesky, calculul inversei si al determinantului lui T , precum si pentru rezolvarea sistemului T x = b.

S-ar putea să vă placă și