Sisteme de ecuaţii algebrice liniare - metode directe (II) Prof.dr.ing. Universitatea "Politehnica" Bucureşti, Facultatea de Inginerie Electrică, Departamentul de Electrotehnică Suport didactic pentru disciplina Algoritmi Numerici, 2016-2017 1/59
Cuprins 1 Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple 2 Varianta Doolittle Varianta Cholesky 3 Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu 4 2/59
Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple Sistem de n ecuaţii algebrice liniare cu n necunoscute: a 11 x 1 + a 12 x 2 + +a 1n x n = b 1, a 21 x 1 + a 22 x 2 + +a 2n x n = b 2, a n1 x 1 + a n2 x 2 + +a nn x n = b n. (1) 3/59
Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple Se dă matricea coeficienţilor A = şi vectorul termenilor liberi a 11 a 12 a 1n a 21 a 22 a 2n a n1 a n2 a nn se cere să se rezolve sistemul unde x este soluţia IRn n (2) b = [ b 1 b 2 b n ] T IR n, (3) Ax = b, (4) x = [ x 1 x 2 x n ] T IR n. (5) 4/59
Buna formulare matematică Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple Problema este bine formulată din punct de vedere matematic (soluţia există şi este unică) matricea A este nesingulară (are determinantul nenul). Se scrie formal: x = A 1 b trebuie citită ca: "x este soluţia sistemului algebric liniar Ax = b" şi NU "se calculează inversa matricei A care se înmulţeşte cu vectorul b". 5/59
Condiţionarea problemei Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple κ(a) = A A 1 (6) număr de condiţionare la inversare al matricei A. ε x κ(a)ε b, (7) κ(a) 1: Cazul cel mai favorabil: n A = 1 şi ε x = ε b. (matrice ortogonală) Numărul de condiţionare este o proprietate a matricei şi nu are legătură nici cu metoda de rezolvare propriu-zisă, nici cu erorile de rotunjire care apar în mediul de calcul. În practică: Dacă κ(a) > 1/eps problema se consideră slab condiţionată. 6/59
Clasificarea metodelor Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple 1 Metode directe - găsesc soluţia teoretică a problemei într-un număr finit de paşi. (Gauss, factorizare LU) 2 Metode iterative - generează un şir de aproximaţii ale soluţiei care se doreşte a fi convergent către soluţia exactă. staţionare: Jacobi, Gauss-Seidel, SOR, SSOR nestaţionare (semiiterative): gradienţi conjugaţi (GC), reziduu minim (MINRES), reziduu minim generalizat (GMRES), gradienţi biconjugaţi (BiGC), etc. 7/59
Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple Fie m sisteme de ecuaţii algebrice liniare Ax (1) = b (1), Ax (2) = b (2),, Ax (m) = b (m), (8) Se dau: A IR n n, b (k) IR n 1, k = 1, m Se cer: x (k) IR n 1, Notăm B = [b (1) b (2) b (m) ] IR n m (9) X = [x (1) x (2) x (m) ] IR n m (10) Se cere să se rezolve sistemul AX = B. (11) 8/59
Varianta I Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple Varianta I - aplicarea succesivă a algoritmului Gauss Efort de calcul: m(2n 3 /3+n 2 ) 2mn 3 /3. Etapa de eliminare este repetată inutil, de m ori. Cea mai proasta idee. 9/59
Varianta II Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple Varianta II - rezolvarea simultană prin adaptarea algoritmului Gauss procedură Gauss_multiplu(n, m, a, B, X) ; rezolvă simultan sistemele algebrice liniare ax = B prin metoda Gauss întreg n ; dimensiunea sistemului întreg m ; numărul de sisteme tablou real a[n][n] ; matricea coeficienţilor - indici de la 1 tablou real B[n][m] ; matricea termenilor liberi tablou real X[n][m] ; matricea soluţie întreg i, j, k real p, s ; etapa de eliminare pentru k = 1, n 1 ; parcurge sub-etape ale eliminării ; aici se poate introduce pivotarea pentru i = k + 1, n ; parcurge liniile p = a ik /a kk ; element de multiplicare pentru j = k + 1, n ; parcurge coloanele a ij = a ij + pa kj pentru j = 1, m ; parcurge coloanele termenilor liberi b ij = b ij + pb kj 10/59
Varianta II Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple ; etapa de retrosubstituţie pentru k = 1, m x nk = b nk /a nn pentru i = n 1, 1, 1 s = 0 pentru j = i + 1, n s = s + a ij x jk x ik = (b ik s)/a ii retur 11/59
Varianta II Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple Efort de calcul T e = n 1 n 1 [2(n k)+2m+1](n k) [2(n k) 2 + 2m(n k)] = k=1 = 2 (n 1)n(2n 1) 6 + 2m n(n 1) 2 k=1 2n3 3 + mn2. (12) n 1 T s = m [2(n i)+2] m i=1 n 1 i=1 [2(n i)] = 2m n(n 1) 2 T = O(2n 3 /3+2mn 2 ), mai mic decât în cazul variantei I. mn 2. (13) 12/59
Varianta III Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple Varianta III - rezolvarea succesivă a sistemelor folosind calculul inversei Se calculeză A 1 Se calculează x (k) = A 1 b (k) imediat ce este cunoscut termenul liber. 13/59
Varianta III Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple funcţie inva(n, a) ; calculează inversa matricei a întreg n ; dimensiunea matricei tablou real a[n][n] ; matricea, indici de la 1 ; alte declaraţii... pentru i = 1, n pentru j = 1, n B ij = 0 B ii = 1 Gauss_multiplu(n, n, a, B, X) întoarce X ; X este inversa matricei Complexitatea calcului inversei: 2n 3 /3+2mn 2 = 8n 3 /3 COSTISITOR! 14/59
Varianta III Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple funcţie produs_mv (n, M, v) ; calculează produsul dintre o matrice pătrată M şi un vector coloană v întreg n ; dimensiunea problemei tablou real M[n][n] ; matricea, indici de la 1 tablou real v[n] ; vectorul tablou real p[n] ; rezultatul p = Mv ; alte declaraţii... pentru i = 1, n p i = 0 pentru j = 1, n p i = p i + M ij v j întoarce p Complexitatea inmulţirii dintre o matrice şi un vector: 2n 2 Efortul total de calcul : O(8n 3 /3+2mn 2 ). Există o variantă mai eficientă bazată pe factorizarea matricei coeficienţilor. 15/59
Ideea metodei Varianta Doolittle Varianta Cholesky Ax = b, (14) A = LU, factorizare (15) A = L = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 U = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 LUx = b. (16) 16/59
Ideea metodei Varianta Doolittle Varianta Cholesky Ax = b, (17) A = LU, factorizare (18) LUx = b. (19) Notăm (50) y = Ux, (20) Ly = b, substituţie progresivă Ux = y. substituţie progresivă (21) 17/59
Varianta Doolittle Varianta Cholesky Un exemplu simplu - pornind de la Gauss x 1 + 2x 2 x 3 = 1, 2x 1 + 3x 2 + x 3 = 0, 4x 1 x 2 3x 3 = 2. x 1 + 2x 2 x 3 = 1, 7x 2 x 3 = 2, 9x 2 + x 3 = 2. x 1 + 2x 2 x 3 = 1, 7x 2 x 3 = 2, 2/7x 3 = 4/7. x 3 = ( 4/7)/( 2/7) = 2, x 2 = ( 2+x 3 )/7 = 0, x 1 = 1 2x 2 + x 3 = 1. (22) (23) (24) (25) 18/59
Varianta Doolittle Varianta Cholesky Un exemplu simplu - pornind de la Gauss Factorizare L = Verificare: LU = A U = 1 0 0 2/1 1 0 4/1 9/7 1 A = 1 2 1 0 7 1 0 0 2/7 = 1 2 1 2 3 1 4 1 3. (26) 1 0 0 2 1 0 4 9/7 1. (27). (28) 19/59
Varianta Doolittle Varianta Cholesky Un exemplu simplu - pornind de la Gauss Substituţie progresivă Ly = b 1 0 0 2 1 0 4 9/7 1 y 1 y 2 y 3 = 1 0 2 y 1 = 1 2y 1 + y 2 = 0 4y 1 9/7y 2 + y 3 = 2, (29) (30) y 1 = 1 y 2 = 2y 1 = 2 y 3 = 2 4y 1 + 9/7y 2 = 4/7. (31) 20/59
Varianta Doolittle Varianta Cholesky Un exemplu simplu - pornind de la Gauss Substituţie regresivă Ux = y 1 2 1 x 1 1 0 7 1 x 2 = 2, (32) 0 0 2/7 x 3 4/7 x 1 + 2x 2 x 3 = 1 7x 2 x 3 = 2 (33) 2/7x 3 = 4/7. x 3 = ( 4/7)/( 2/7) = 2, x 2 = ( 2+x 3 )/7 = 0, x 1 = 1 2x 2 + x 3 = 1. (34) 21/59
Variante de factorizare Varianta Doolittle Varianta Cholesky Factorizare nu este unică. Variante standard: Doolittle: l ii = 1 - se aplică la orice matrice nesingulară Crout: u ii = 1 - se aplică la orice matrice nesingulară Cholesky: L = U T - se aplică doar matricelor simetrice şi pozitiv definite [ 3 2 6 1 ] [ ][ l11 0 u11 u = 12 l 21 l 22 0 u 22 l 11 u 11 = 3 l 12 u 12 = 2 l 21 u 11 = 6 l 21 u 12 + l 22 u 22 = 1 ]. (35) (36) Sistemul devine determinat doar dacă fixăm oricare două valori. 22/59
Variante de factorizare Varianta Doolittle Varianta Cholesky Exemplu: [ 3 2 6 1 ] = [ 9 2 2 1 [ 1 0 2 1 ] = ][ 3 2 0 3 ] = [ 3 0 2/3 5/3 [ 3 0 6 3 ][ 3 2/3 0 5/3 ][ 1 2/3 0 1 ]. ] (37). (38) 23/59
Algoritmul variantei Doolittle Varianta Doolittle Varianta Cholesky A 0 = A, (39) A 1 = E 1 A 0, A 2 = E 2 A 1 = E 2 E 1 A 0, A n 1 = E n 1 A n 2 = E n 1 E n 2 E 2 E 1 A 0. (40) U = A n 1. (41) Dar E este nesingulară şi: E = E n 1 E n 2 E 2 E 1, (42) U = EA. (43) L = E 1. (44) 24/59
Algoritmul variantei Doolittle Varianta Doolittle Varianta Cholesky E 1 1 = a 11 a 12 a 13 0 0 a 22 a 32 a 23 a 33 E 1 = 1 0 0 a 21 /a 11 1 0 a 31 /a 11 0 1 = E 1 1 0 0 a 21 /a 11 1 0 a 31 /a 11 0 1, E 1 2 = a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33. (45). (46) 1 0 0 0 1 0 0 a 32 /a 22 1. (47) E 1 = E 1 1 E 1 2 E 1 n 2 E 1 n 1. (48) 1 0 0 E 1 = a 21 /a 11 1 0 = L. (49) a 31 /a 11 a 32 /a 22 1 25/59
Algoritmul variantei Doolittle Varianta Doolittle Varianta Cholesky ; etapa de eliminare din metoda Gauss cu memorarea opuselor elementelor ; de multiplicare în triunghiul inferior al matricei pentru k = 1, n 1 ; parcurge sub-etape ale eliminării pentru i = k + 1, n ; parcurge liniile p = a ik /a kk ; element de multiplicare pentru j = k + 1, n ; parcurge coloanele a ij = a ij + pa kj a ik = p procedură factorizare_lu(n, a) ; factorizează "in loc" matricea a ; varianta Doolittle ; declaraţii pentru k = 1, n 1 ; parcurge sub-etape ale eliminării pentru i = k + 1, n ; parcurge liniile a ik = a ik /a kk ; element de multiplicare pentru j = k + 1, n ; parcurge coloanele a ij = a ij a ik a kj ; Factorizare "pe loc" : "A = L + U I" retur 26/59
Varianta Doolittle Varianta Cholesky Calculul soluţiei după factorizare Notăm (50) LUx = b. (50) y = Ux, (51) Ly = b, (52) Ux = y. (53) "y = L 1 b" se rezolvă prin substituţie progresivă: l 11 y 1 = b 1, l 21 y 1 + l 22 y 2 = b 2, l n1 y 1 + l n2 y 2 + l nn y n = b n, y 1 = b 1 /l 11, y 2 = (b 2 l 21 y 1 )/l 22, y n = (b n n 1 k=1 l nky k )/l nn. (54) 27/59
Varianta Doolittle Varianta Cholesky Calculul soluţiei după factorizare y 1 = b 1 /l 11, (55) i 1 y i = b i l ij y j /l ii, i = 2,...,n. (56) j=1 "x = U 1 y" se rezolvă prin substituţie regresivă: x n = y n /u nn, (57) n x i = y i u ij x j /u ii, i = n 1,...,1. (58) j=i+1 28/59
Varianta Doolittle Varianta Cholesky Calculul soluţiei după factorizare procedură rezolvă_lu(n, a, b, x) ; rezolvă sistemul de ecuaţii ax = b prin factorizare LU ; matricea este presupusă a fi deja factorizată în loc ; varianta Doolittle ; declaraţii ; substituţie progresivă y 1 = b 1 ; formula (55), unde l 11 = 1 pentru i = 2, n s = 0 pentru j = 1, i 1 s = s + a ij y j ; formula (56), unde L este memorat în a y i = b i s ; deoarce l ii = 1 ; substituţie regresivă x n = y n/a nn ; formula (57), unde U este memorat în a pentru i = n 1, 1, 1 s = 0 pentru j = i + 1, n s = s + a ij x j x i = (y i s)/a ii retur 29/59
Evaluarea algoritmului Varianta Doolittle Varianta Cholesky Complexitate: Erori: Factorizarea propriu-zisă a: T f = O(2n 3 /3) Rezolvările: T s = O(2n 2 ). Necesarul de memorie: M = O(n 2 ) Nu există erori de trunchiere; Erorile de rotunjire pot fi micşorate dacă se aplică strategii de pivotare. 30/59
Pivotare Varianta Doolittle Varianta Cholesky Matrice de permutare: matrice care are exact un element egal cu 1 pe fiecare linie şi pe fiecare coloană, şi 0 în rest; inversa unei matrice de permutare este o matrice de permutare; produsul a două matrice de permutare este de asemenea o matrice de permutare; Pivotarea pe linie poate fi descrisă prin înmulţirea la stânga cu o matrice de permutare notată P. Pivotarea pe coloane poate fi descrisă prin înmulţirea la dreapta cu o matrice de permutare ce va fi notată cu Q. 31/59
Pivotare Varianta Doolittle Varianta Cholesky A 0 = P 1 A. (59) Presupunând că la fiecare etapă de eliminare se efectuează o permutare parţială, relaţiile (40) se scriu A 1 = E 1 A 0 = E 1 P 1 A, A 2 = E 2 P 2 A 1 = E 2 P 2 E 1 P 1 A, A n 1 = E n 1 P n 1 E 2 P 2 E 1 P 1 A. (60) 32/59
Pivotare Varianta Doolittle Varianta Cholesky U = E n 1 P n 1 E 2 P 2 E 1 P 1 A. (61) U = E 3 P 3 E 2 P 2 E 1 P 1 A = = E }{{} 3 E 3 P 3 E 2 P 1 3 }{{} E 2 = E 3 E 2 E 1 P 3 P 2 P }{{}}{{ 1 } L 1 P P 3 P 2 E 1 P 1 2 P 1 3 P 3 P 2 P 1 A = }{{} E 1 A (62) 33/59
Pivotare Varianta Doolittle Varianta Cholesky Factorizarea cu pivotare pe linii: PA = LU, (63) Factorizarea LU cu pivotare totală (rareori aplicată) PAQ = LU, (64) 34/59
Cazul sistemelor multiple Varianta Doolittle Varianta Cholesky Rezolvate cu factorizare: T = O(2n 3 /3+2mn 2 ), mai mic decât cel necesar calculului inversei. Efort de calcul pentru rezolvarea sistemelor multiple. Nr. sisteme Metoda Complexitate T 1 Gauss 2n 3 /3+n 2 LU 2n 3 /3+2n 2 m - simultan Gauss 2n 3 /3+2mn 2 m - succesiv folosind inversa 8n 3 /3+2mn 2 LU 2n 3 /3+2mn 2 35/59
Varianta Cholesky Varianta Doolittle Varianta Cholesky Dacă A este simetrică, atunci este de dorit ca U = L T. (65) Aceasta se poate realiza doar dacă A este pozitiv definită. Pp. A = LL T. (66) fie x nenul; atunci y = L T x va fi nenul x T Ax = x T LL T x = y T y = n i=1 y 2 i > 0. 36/59
Varianta Cholesky Varianta Doolittle Varianta Cholesky Teoremă: Dacă A este o matrice simetrică şi pozitiv definită, atunci factorizarea ei Cholesky există în mod unic, adică există în mod unic o matrice triunghiular inferioară L cu elementele diagonale pozitive, astfel încât. A = LL T 37/59
Modul de generare al matricei L Varianta Doolittle Varianta Cholesky [ α a T a A Complementul Schur al lui α: ] [ ][ λ 0 λ l T = l L 0 L T ]. (67) λ = α (68) l = a/λ (69) LL T = A ll T. (70) S = A ll T = A aa T /α. (71) Se poate demonstra că S este simetrică şi pozitiv definită şi, în consecinţa LL T este factorizarea ei Cholesky. 38/59
Modul de generare al matricei L Varianta Doolittle Varianta Cholesky [ λ 0 A = A 0 = l L Similar, ][ λ l T 0 L T ] [ λ 0 = l I A 1 = L 2 A 2 L T 2, ][ 1 0 0 S ][ λ l T 0 I ] = L 1 A 1 L T 1. (72) unde A n = I.. (73) A n 1 = L n A n L T n, A = L 1 L } 2 L {{ n L } T n L T n 1 LT 1 (74) }{{} L L T 39/59
Algoritm Varianta Doolittle Varianta Cholesky l kk = l ik k 1 akk lkj 2, k = 1,...,n (75) j=1 k 1 = (a ik l ij l kj )/l kk, i = k + 1,...,n. (76) j=1 40/59
Algoritm Varianta Doolittle Varianta Cholesky procedură factorizare_lu_cholesky(n, a, l) ; factorizează matricea a, presupusă simetrică şi pozitiv definită ; întoarce matricea triunghiular inferioară l ; varianta Cholesky ; declaraţii pentru k = 1, n ; parcurge sub-etape ale eliminării pentru i = k, n ; calculează coloana, sub diagonală s = a ik pentru j = 1, k 1 s = s l ij l kj dacă i = k l kk = s altfel l ik = s/l kk retur 41/59
Algoritm Varianta Doolittle Varianta Cholesky Efortul de calcul T e n [2k(n k)] = 2 k=1 [ n = 2 (n k) 2 n k=1 [ (n 1)n(2n 1) = 2 6 n [(n k n)(n k)] = k=1 ] n (n k) = k=1 n n(n 1) 2 ] ( ) 2n 3 2 6 n3 = n3 2 3 Algoritmul Cholesky este întotdeauna stabil şi nu are nevoie de pivotare. Aceasta se datorează proprietăţilor speciale ale matricei A, care fiind pozitiv definită este şi diagonal dominantă. 42/59
Cazul matricelor rare Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu Matrice rară = matrice care conţine un număr foarte mare de elemente nenule. O matrice care nu este rară se numeşte matrice densă sau plină. Densitatea unei matrice = raportul dintre numărul de elemente nenule şi numărul total de elemente al matricei. Dacă, pentru o anumită matrice care are şi elemente nule, se poate elabora un algoritm care exploatează această structură şi care, este mai eficient decât algoritmul conceput pentru matricea plină, atunci aceasta este o matrice rară. 43/59
Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu Formate de memorare a matricelor rare Matrix Market: se memoreză doar valorile nenule şi "coordonatele" lor în matrice. http://math.nist.gov/matrixmarket Exemplu: tablou bidimensional de dimensiune m n: M plin = 8mn B M rar,coord = 8 n nz + 4 2n nz = 16n nz B. M = 4 0 0 0 0 0 5 1 2 3 0 7 val = [ 4 5 1 2 3 7 ] r_idx = [ 1 2 2 3 3 3 ] c_idx = [ 1 3 4 1 2 4 ] 44/59
Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu Formate de memorare a matricelor rare Formatul Yale sau CRS - Compressed Row Storage: M rar,crs = 8n nz + 4(m+1)+4n nz = 12n nz + 4(m+1) B. M = 4 0 0 0 0 0 5 1 2 3 0 7 val = [ 4 5 1 2 3 7 ] r_ptr = [ 1 2 4 7 ] c_idx = [ 1 3 4 1 2 3 ] Similar, CCS (Compressed Column Storage)- cunoscut şi sum numele Harwell - Boeing. M rar,ccs = 8n nz + 4(n+1)+4n nz = 12n nz + 4(n+1) B. M = 4 0 0 0 0 0 5 1 2 3 0 7 val = [ 4 2 3 5 1 7 ] c_ptr = [ 1 3 4 5 7 ] r_idx = [ 1 3 3 2 2 3 ] 45/59
Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu Formate de memorare a matricelor rare Matricelor bandă (de exemplu matrice tridiagonală): q 1 r 1 0 0 0 0 0 p 2 q 2 r 2 0 0 0 0 0 p 3 q 3 r 3 0 0 0 M = 0 0 0 0 p n 1 q n 1 r n 1 0 0 0 0 0 p n q n Memorare cu ajutorul a trei vectori (CDS - Compressed Diagonal Storage): 0 p 2 p 3 p n 1 p n M rar = q 1 q 2 q 3 q n 1 q n r 1 r 2 r 3 r n 1 0 46/59
Metode directe pentru matrice rare Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu Gauss pentru matrice tridiagonală, matricea la subetapa k de eliminare: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 q k r k 0 0 0 0 0 0 0 p k+1 q k+1 r k+1 0 0 0 0 0 0 0 p k+2 q k+2 r k+2 0 0... 0 0 0 0 0 0 0 p n q n Un singur element de multiplicare m = p k+1 /q k. Singura modificare suferind-o ecuaţia k + 1: q k+1 = q k+1 + m r k, şi temenul liber corespunzător. 47/59
Metode directe pentru matrice rare Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu Gauss pentru matrice tridiagonală, matricea după eliminare. q 1 r 1 0 0 0 0 0 0 0 0 q 2 r 2 0 0 0 0 0 0... 0 0 0 q k r k 0 0 0 0 0 0 0 0 q k+1 r k+1 0 0 0... 0 0 0 0 0 0 0 q n 1 0 r n 1 0 0 0 0 0 0 0 0 q n Retrosubstituţie q i x i + r i x i+1 = b i x n = b n /q n, (77) x i = (b i r i x i+1 )/q i, i = n 1,...,1. (78) 48/59
Metode directe pentru matrice rare Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu procedură Gauss_tridiag(n, p, q, r, b, x) ; rezolvă sistemul algebric liniar ax = b prin metoda Gauss ; matricea a este tridiagonală, memorată în p, q, r întreg n ; dimensiunea sistemului tablou real p[n], q[n], r[n] ; "matricea" coeficienţilor - indici de la 1 tablou real b[n] ; vectorul termenilor liberi tablou real x[n] ; vectorul soluţie întreg i, k ; etapa de eliminare din metoda Gauss pentru k = 1, n 1 ; parcurge sub-etape ale eliminării m = p k+1 /q k ; element de multiplicare q k+1 = q k+1 + mr k ; modifică element în linia k + 1 b k+1 = b k+1 + mb k ; modifică termenul liber al ecuaţiei k + 1 ; etapa de retrosubstituţie x n = b n/q n pentru i = n 1, 1, 1 x i = (b i r i x i+1 )/q i retur T = O(8n), M = O(5n). 49/59
Metode directe pentru matrice rare Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu Pentru matrice rare fără o structură particulară, algoritmii trebuie adaptaţi memorării de tip CRS sau CCS. La eliminare matricea se poate umple, a.î. pivotarea urmăreşte nu numai stabilitatea numerică, ci şi minimizarea umplerilor, adică a elementelor nenule nou apărute. La matrice rare inversarea este practic imposibilă datorită fenomen de umplere. 50/59
Metode directe pentru matrice rare Ce sunt? Formate de memorare Adaptarea metodelor directe - exemplu Factorizarea unei matrice rare poate salva raritatea dacă matricea are o anumită structură. A 1 = 0 0 0 0 0 0 0 0 0 0 0 0 A 2 = 0 0 0 0 0 0 0 0 0 0 0 0 Matricea A 1 are factorii LU rari, în timp ce matricea A 2 are factorii LU plini. Structura matricei joacă deci un rol important în conceperea algoritmului de rezolvare. 51/59
Minimal: [1], Algoritmi numerici pentru calcule ştiintifice în ingineria electrică Editura MatrixROM, 2013, pag. 51-66 Alte recomandări: [2] Timothy Davis, Direct methods for sparse linear systems, SIAM 2006. [3] Timothy A. Davis, Sivasankaran Rajamanickam, and Wissam M. Sid-Lakhdar, A survey of direct methods for sparse linear systems, draftul unei lucrări ce va apare in 2016, disponibilă la http://faculty.cse.tamu.edu/davis/publications_files/survey_tech_report.pdf 52/59
Pachete existente: ([3]) BCSLIB-EXT Ashcraft (1995), Ashcraft et al. (1998), Pierce and Lewis (1997), aanalytics.com BSMP Bank and Smith (1987), www.netlib.org/linalg/bsmp.f CHOLMOD Chen et al. (2008), suitesparse.com CSparse Davis (2006), suitesparse.com DSCPACK Heath and Raghavan (1995) (1997),Raghavan (2002), www.cse.psu.edu/?raghavan. Also CAPSS.Elemental Poulson, libelemental.org ESSL www.ibm.com GPLU Gilbert and Peierls (1988), www.mathworks.com IMSL www.roguewave.com KLU Davis and Palamadai Natarajan (2010), suitesparse.com LDL Davis (2005), suitesparse.com MA38 Davis and Duff (1997), www.hsl.rl.ac.uk MA41 Amestoy and Duff (1989), www.hsl.rl.ac.uk MA42, MA43 Duff and Scott (1996), www.hsl.rl.ac.uk. Successor to MA32. HSL MP42, HSL MP43 Scott (2001a) (2001b) (2003), www.hsl.rl.ac.uk. Also MA52 and MA72. MA46 Damhaug and Reid (1996), www.hsl.rl.ac.uk MA47 Duff and Reid (1996b), www.hsl.rl.ac.uk MA48, HSL MA48 Duff and Reid (1996a), www.hsl.rl.ac.uk. Successor to MA28. HSL MP48 Duff and Scott (2004), www.hsl.rl.ac.uk MA49 Amestoy et al. (1996b), www.hsl.rl.ac.uk MA57, HSL MA57 Duff (2004), www.hsl.rl.ac.uk MA62, HSL MP62 Duff and Scott (1999), Scott (2003), www.hsl.rl.ac.uk MA67 Duff et al. (1991), www.hsl.rl.ac.uk HSL MA77 Reid and Scott (2009b), www.hsl.rl.ac.uk HSL MA78 Reid and Scott (2009a), www.hsl.rl.ac.uk HSL MA86, HSL MA87 Hogg et al. (2010) Hogg and Scott (2013b), www.hsl.rl.ac.uk HSL MA97 Hogg and Scott (2013b), www.hsl.rl.ac.uk 53/59
Mathematica Wolfram, Inc., www.wolfram.com MATLAB Gilbert et al. (1992), www.mathworks.com Meschach Steward and Leyk, www.netlib.org/c/meschach MUMPS Amestoy et al. (2000), Amestoy et al. (2001a), Amestoy et al. (2006),www.enseeiht.fr/apo/MUMPS NAG www.nag.com NSPIV Sherman (1978b) (1978a), www.netlib.org/toms/533 Oblio Dobrian, Kumfert and Pothen (2000), Dobrian and Pothen (2005), www.cs.purdue.edu/homes/apothen PARDISO Schenk and G artner (2004), Schenk, G artner and Fichtner (2000), www.pardiso-project.org PaStiX H enon et al. (2002), www.labri.fr/ ramet/pastix QR MUMPS Buttari (2013), buttari.perso.enseeiht.fr/qr mumps PSPASES Gupta et al. (1997), www.cs.umn.edu/ mjoshi/pspases Quern Bridson, www.cs.ubc.ca/?rbridson/quern S+ Fu et al. (1998), Shen et al. (2000), www.cs.ucsb.edu/projects/s+ Sparse 1.4 Kundert (1986), sparse.sourceforge.net SPARSPAK Chu et al. (1984), George and Liu (1979a) (1981) (1999), www.cs.uwaterloo.ca/?jageorge SPOOLES Ashcraft and Grimes (1999), www.netlib.org/linalg/spooles SPRAL SSIDS Hogg et al. (2016), www.numerical.rl.ac.uk/spral SuiteSparseQR Yeralan et al. (2016), Foster and Davis (2013), suitesparse.com SuperLLT Ng and Peyton (1993a), http://crd.lbl.gov/ EGNg SuperLU Demmel et al. (1999a), crd.lbl.gov/ xiaoye/superlu SuperLU DIST Li and Demmel (2003), crd.lbl.gov/ xiaoye/superlu SuperLU MT Demmel et al. (1999b), crd.lbl.gov/ xiaoye/superlu 54/59
TAUCS Rotkin and Toledo (2004), www.tau.ac.il/ stoledo/taucs UMFPACK Davis (2004b) Davis and Duff (1997) (1999), suitesparse.com WSMP Gupta (2002a), Gupta et al. (1997), www.cs.umn.edu/ agupta/wsmp Y12M Zlatev, Wasniewski and Schaumburg (1981), www.netlib.org/y12m YSMP Eisenstat et al. (1977) (1982), Yale Librarian, New Haven, CT 55/59
42 de cursuri pe youtube ale lui T. Davis, primul este aici https://www.youtube.com/watch?v=1dgrtowbkqs 56/59
Pe scurt Fiţi atenţi la astfel de informaţii (capturi din COMSOL) 57/59
Pe scurt Fiţi atenţi la astfel de informaţii 58/59
Tema 3 Abonaţi-vă (cel puţin pe durata acestui semestru) la următoarele 1 NA Digest http://www.netlib.org/na-digest-html/ 2 Computational Science Stack Exchange https://scicomp.stackexchange.com/ şi urmăriţi unul sau mai multe subiecte de interes. Faceţi un scurt raport menţionând informaţiile care v-au stârnit interesul pe durata acestui semestru. Structuraţi raportul sub forma unui tabel cu două coloane, în coloana din stânga luaţi textul relevant din mesajele pe care le veţi primi ca urmare a celor două acţiuni de mai sus şi în coloana din dreapta introduceţi comentariile personale. Nota pe acest raport va reflecta comentariile personale. 59/59