Sunteți pe pagina 1din 8

Tema nr.

2 Date: n - dimensiunea sistemului, - precizia calculelor, matricea sistemului A Rnn simetric a si pozitiv denit a, vectorul termenilor liberi n bR : S a se calculeze, o descompunere LDLT (descompunerea/factorizarea Choleski) a matricii A (A = LDLT ), unde L este matrice inferior triunghiular a cu toate elementele de pe diagonala pricipal a egale cu 1 iar D este matrice diagonal a; Folosind aceast a descompunere, s a se calculeze determinantul matricii A (det A = det L det D det LT ) ; Utiliz and descompunerea Choleski calculat a mai sus si metodele substitut iei directe si inverse, s a se calculeze xChol , o solut ie aproximativ a a sistemului Ax = b; S a se verice solut ia calculat a prin a sarea normei: |Ainit xChol b| (aceast a norm a ar trebui s a e mai mic a dec at 108 , 109 ) ial a, | | = || ||2 este norma euclidian a. Ainit este matricea init Restrict ie: n program s a se aloce o singura matrice A. Matricea D se va memora ntr-un vector d (se memoreaz a doar elementele de pe diagonala matricii D ). Elementele de sub diagonala principal a a matricii L (partea strict inferior triunghiular a a matricii L) se vor calcula direct n matricea A. Nu se vor memora elementele 1 de pe diagonala matricii L, dar se va tine cont de acest lucru la rezolvarea sistemelor triunghiulare ce implic a matricea L. Observat ii 1. Precizia calculelor , este un num ar pozitiv de forma = 10t (cu t = 5, 6, ..., 10, ... la alegere) care este dat a de intrare n program (se cite ste de la tastatur a sau din sier) la fel ca si dimensiunea n a datelor. 1

Acest num ar se folose ste atunci c and test am dac a o variabil a este 0 sau nu naintea unei operat ii de mp art ire. Dac a vrem s a efectu am operat ia de mp art ire s = 1/v unde v R, NU vom scrie: if(v ! = 0) s = 1/v ; else Write( nu se poate face impartirea); ci vom scrie n program: if(Math.Abs(v ) > eps) s = 1/v ; else Write( nu se poate face impartirea); 2. Dac a pentru o matrice A simetric a si pozitiv denit a avem descomT punerea LDL , rezolvarea sistemului Ax = b se reduce la rezolvarea a dou a sisteme cu matrice triunghiular a si a unuia cu matrice dagonal a: = b, zi , i = 1, .., n) = z, (yi = Ax = b LDLT x = b di T L x = y. Se rezolv a nt ai sistemul inferior triunghiular Lz = b (se adapteaz a formulele substitut iei directe pentru matrici cu diagonala egal a cu 1). Apoi se rezolv a sistemul diagonal Dy = z (formulele de rezolvare sunt scrise mai sus, z ind solut ia obt inut a anterior) si apoi se rezolv a sisT temul superior triunghiular L x = y unde y este solut ia obt inut a la rezolvarea sistemului precedent Dy = z (din nou trebuie s a se adapteze formulele de rezolvare a sistemelor superior triunghiulare pentru matrici cu diagonala egal a cu 1). Vectorul x obt inut la rezolvarea sistemului LT x = y este si solut ia sistemului init ial Ax = b. 3. Pentru calculul |Ainit xChol b| avem: A = (aij ) Rnn , x Rn , Ax = y Rn , y = (y i)n i=1
n

Lz Dy

yi =

j =1

aij x j ,

i = 1, 2, . . . , n |z | = z
n 2 2 zi

n z = (z i )n i=1 R

, 2

=
i=1

Atent ie la calculul vectorului AxChol - matricea A va modicat a dup a calculul descompunerii Choleski: va avea n partea strict inferior triunghiular a elementele matricii L, iar elementele matricii A se g asesc n partea superior triunghiular a a matricii A. Metodele substitut iei Fie sistemul liniar: Ax = b (1) unde matricea sistemului A este triunghiular a. Pentru a g asi solut ia unic aa sistemului (1), trebuie ca matricea s a e nesingular a. Determinantul matricilor triunghiulare este dat de formula: det A = a11 a22 ann Prin urmare pentru rezolvarea sistemului (1) vom presupunem c a: det A = 0 aii = 0 i = 1, 2, . . . , n Vom considera nt ai cazul c and matricea A este inferior triunghiular a. Sistemul (1) are forma: a11 x1 a21 x1 + a22 x2 . . . ai1 x1 . . . + ai2 x2 + + aii xi = b1 = b2 = bi

an1 x1 + an2 x2 + + ani xi + + ann xn = bi Necunoscutele x1 , x2 , ..., xn se deduc folosind ecuat iile sistemului de la prima c atre ultima. Din prima ecuat ie se deduce x1 : x1 = b1 a11 (2)

Din a doua ecuat ie, folosind (2), obt inem x2 : x2 = b2 a21 x1 a22 3

C and ajungem la ecuat ia i: ai1 x1 + ai2 x2 + + aii1 xi1 + aii xi = bi folosind variabilele x1 , x2 ,...,xi1 calculate anterior, avem: xi = bi ai1 x1 aii1 xi1 aii

Din ultima ecuat ie se deduce xn astfel: xn = bn an1 x1 an2 x2 ann1 xn1 ann

Algoritmul de calcul a solut iei sistemelor (1) cu matrice inferior triunghiular a este urm atorul: (bi xi =
i1 j =1

aij xj ) ,

aii

i = 1, 2, . . . , n 1, n

(3)

Acest algoritm poart a numele de metoda substitut iei directe. Pentru matricile inferior triunghiulare cu 1 pe diagonal a (aii = 1 , i) formula de mai sus devine: xi = bi
i1 j =1

aij xj

i = 1, 2, . . . , n 1, n

(4)

Vom considera, n continuare sistemul (1) cu matrice superior triunghiular a: + a1n xn a11 x1 + + a1i xi + + a1n1 xn1 .. . aii xi + + ain1 xn1 + ain xn .. . an1n1 xn1 + an1n xn ann xn = b1 = bi = bn1 = bn

Necunoscutele x1 , x2 ,...,xn se deduc pe r and, folosind ecuat iile sistemului de la ultima c atre prima. 4

Din ultima ecuat ie g asim xn : xn = bn ann (5)

a mai sus, din penultima ecuat ie a sistemului Folosnd valoarea lui xn dedus obt inem: bn1 an1n xn xn1 = an1n1 C and ajungem la ecuat ia i: aii xi + aii+1 xi+1 + + ain xn = bi se cunosc deja xi+1 ,xi+2 ,..., xn si deducem: xi = bi aii+1 xi+1 ain xn aii

Din prima ecuat ie g asim valoarea lui x1 : x1 = b1 a12 x2 a1n xn a11

Procedeul descris mai sus poart a numele de metoda substitut iei inverse pentru rezolvarea sistemelor liniare cu matrice superior triunghiular a: (bi xi =
n j =i+1

aij xj ) ,

aii

i = n, n 1, . . . , 2, 1

(6)

Pentru matricile superior triunghiulare cu aii = 1, i formula de mai sus devine: n xi = bi


j =i+1

aij xj

i = n, n 1, . . . , 2, 1

(7)

Descompunerea Choleski (LDLT ) Fie A Rnn o matrice cu elemente reale, p atratic a de dimensiune n, T si pozitiv denit a. simetric a (A = A ) O matrice simetric a este o matrice egal a cu transpusa sa. In astfel de matrici elementele de sub diagonala principal a a matricii coincid cu elementele de deasupra diagonalei principale a matricii (informat ia se repet a). Se nume ste matrice pozitiv denit a o matrice care satisface urm atoarea relat ie: (Ax, x)Rn > 0 , x Rn , x = 0 (8) O matrice pozitiv denit a are proprietatea c a este nesingular a (det A = 0). Se caut a o descompunere pentru matricea A de forma: A = LDLT unde L Rnn este matrice inferior triunghiular a cu elementele de pe dia, agonala principal a egale cu 1 (lii = 1 i), D este o matrice diagonal D =diag(d1 , d2 , ..., dn ), iar LT este transpusa matricii L (LT este matrice superior triunghiular a) Algoritmul de calcul al descompunerii LDLT (metoda Choleski) Fie A o matrice p atratic a, pozitiv denit a si simetric a. Algoritmul de calcul al matricii inferior triunghiulare L si al matricii D are n etape. La ecare pas se determin a c ate o o coloan a din matricea L si un element de pe diagonala matricii D . Facem urm atoarele notat ii (pentru a u sura deducerea algoritmului): T = LD = (tij ) tij = dj lij U = LT = (uij ) uij = lji i, j

Pasul p (p = 1, 2, . . . , n) La acest pas se calculeaz a elementul dp si elementele coloanei p a matricii L , lip , i = p + 1, . . . , n (restul elementelor de pe coloana p a matricii L au valori cunoscute: lip = 0, i = 1, . . . , p 1, lpp = 1). Int ai se calculeaz a elementul diagonal dp si apoi elementele coloanei p a matricii L, lip , i = p + 1, . . . , n. 6

Sunt cunoscute de la pa sii anteriori: primele p 1 elemente de pe diagonala lui D : dk , k = 1, . . . , p 1 elementele primelor p 1 coloane din L: lik cu k = 1, . . . , p 1 , i Calculul elementului diagonal dp : Folosind relat ia A = LDLT = T U : app = (LDL )pp = (T U )pp =
k =1 T n p 1

tpk ukp =
k =1

dk lpk lpk + dp 1

Prin urmare: app =

p 1 k =1

2 dk lpk + dp

In aceast a relat ie singurul element necunoscut este dp deoarece elementele dk si lpk , k = 1, . . . , p 1 sunt elemente de pe diagonala matricii D si de pe coloane ale matricii L calculate la pa sii anteriori. Deducem: dp = app
p 1 k =1 2 dk lpk

(9)

Calculul elementelor lip , i = p + 1, . . . , n Folosim, din nou, relat ia A = LDLT = T U : aip = (LDLT )ip = (T U )ip =
n k =1 p 1

tik ukp =

k =1

dk lik lpk + lip dp

Dac a dp = 0 (pentru matrici A pozitiv denite acest lucru este adev arat) putem calcula elementele coloanei p a matricii L astfel: lip = aip
p 1 k =1

dk lik lpk

d p , i = p + 1, . . . , n

(10)

si lpk k = 1, . . . , p 1 sunt elemente din D si L calculate (elementele dk , lik la pa sii anteriori)

Dac a avem un element dp = 0, algoritmul se opre ste, descompunerea T LDL nu poate calculat a. Pentru matricile simetrice si pozitiv denite dp = 0, p. Observat ie: Pentru memorarea elementelor plasate sub diagonala principal aa matricii L se poate folosi partea strict inferior triunghiular a a matricii A init ial a: lij = aij , i = 1, 2, . . . , n , j = 1, 2, . . . , i 1.

Se observ a c a n acest fel nu se memoreaz a elementele de pe diagonala principal a a matricii L, lii = 1, i = 1, . . . , n. Vom memora mascat aceste elemente n formulele de rezolvare a sistemelor triunghiulare ce implic a matricea L. Se vor folosi formulele (4) pentru rezolvarea sistemului inferior triunghiular Lz = b si formulele (7) pentru rezolvarea sistemului superior triunghiular LT x = y . Calculele (9) si (10) se pot face direct n matricea A. Cu acest tip de memorare (partea strict inferior triunghiular a a matricii A cont ine elementele matricii L, iar partea superior triunghiular a are elementele matricii A init iale) trebuie adaptate formulele de calcul a vectorului Ainit xChol . Se va folosi proprietatea de simetrie a matricii A pentru a utiliza valorile corecte ale elementelor de sub diagonala principal a a matricii A: aij = aji , i = 1, . . . n , j = 1, . . . i 1. Exemplu 1 2.5 3 1 0 0 1 0 0 1 2.5 3 A = 2.5 8.25 15.5 = 2.5 1 0 0 2 0 0 1 4 3 15.5 43 3 4 1 0 0 2 0 0 1