Cap.2. 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 Metode numerice, 2017-2018 1/39
Cuprins Formularea problemei 1 Formularea problemei Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple 2 Varianta Doolittle 3 Ce sunt? Adaptarea metodelor directe - exemplu 4 2/39
Formularea problemei 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/39
Formularea problemei 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/39
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/39
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/39
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/39
Formularea problemei 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/39
Varianta I Formularea problemei 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/39
Varianta II Formularea problemei 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 tabloureal a[n][n] ; matricea coeficienţilor - indici de la 1 tablou real B[n][m] ; matricea termenilor liberi tabloureal 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/39
Varianta II Formularea problemei 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/39
Varianta II Formularea problemei 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 (n 1)n(2n 1) = 2 + 2m n(n 1) 2n3 6 2 3 + mn2. (12) k=1 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/39
Varianta III Formularea problemei 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/39
Varianta III Formularea problemei Rezolvarea unui sistem de ecuaţii algebrice liniare Cazul sistemelor multiple funcţie inva(n, a) ; calculează inversa matricei a întreg n ; dimensiunea matricei tabloureal 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/39
Varianta III Formularea problemei 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 tabloureal 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/39
Ideea metodei Formularea problemei Varianta Doolittle 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/39
Ideea metodei Formularea problemei Varianta Doolittle 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/39
Varianta Doolittle 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/39
Varianta Doolittle 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/39
Varianta Doolittle 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/39
Varianta Doolittle 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/39
Variante de factorizare Varianta Doolittle 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/39
Variante de factorizare Varianta Doolittle 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/39
Algoritmul variantei Doolittle Varianta Doolittle 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) E = E n 1 E n 2 E 2 E 1, (42) U = EA. (43) Dar E este nesingulară şi: L = E 1. (44) 24/39
Algoritmul variantei Doolittle E 1 1 = Varianta Doolittle a 11 a 12 a 13 0 a 22 a 23 = E 1 a 11 a 12 a 13 a 21 a 22 a 23 0 a 32 a 33 a 31 a 32 a 33 E 1 = 1 0 0 a 21 /a 11 1 0 a 31 /a 11 0 1 1 0 0 a 21 /a 11 1 0 a 31 /a 11 0 1, E 1 2 =. (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/39
Algoritmul variantei Doolittle Varianta Doolittle ; 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/39
Varianta Doolittle 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/39
Varianta Doolittle 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/39
Varianta Doolittle 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/39
Evaluarea algoritmului Varianta Doolittle 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/39
Cazul sistemelor multiple Varianta Doolittle 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 31/39
Cazul matricelor rare Ce sunt? 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ă. 32/39
Ce sunt? 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 33/39
Metode directe pentru matrice rare Ce sunt? 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. 34/39
Metode directe pentru matrice rare Ce sunt? 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 x n = b n /q n, (59) q i x i + r i x i+1 = b i x i = (b i r i x i+1 )/q i, i = n 1,..., 1. (60) 35/39
Metode directe pentru matrice rare Ce sunt? 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). 36/39
Metode directe pentru matrice rare Ce sunt? 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. 37/39
Metode directe pentru matrice rare Ce sunt? 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. 38/39
Formularea problemei Pag 51-56 din [3] - Algoritmi numerici pentru calcule ştiintifice în ingineria electrică, Editura MatrixROM, 2013, disponibil la http://lmn.pub.ro/ gabriela/books/algnr_matrixrom2013.pdf Notă. nu este parcursă în mod obligatoriu la laborator, dar intră în chestiunile care se vor examina în sesiune. Pentru înţelegerea profundă a lucrurilor, vă recomand să implementaţi, să testaţi şi să analizaţi toţi algoritmii care au descrişi în pseudcod în acest curs. Pentru bonus, puteţi redacta un raport dedicat acestei teme. Doritorii sunt rugaţi să îşi anunţe intenţia. 39/39