Documente Academic
Documente Profesional
Documente Cultură
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
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
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)
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
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
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)
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