Sunteți pe pagina 1din 10

Laborator 2

Rezolvarea sistemelor liniare determinate. Sisteme triunghiulare. Eliminarea gaussian a


2.1 Tema

Rezolvarea numeric a sistemelor liniare inferior i superior triunghiulare prin metoa s de de substitutie direct precum i rezolvarea sistemelor liniare determinate dense a s prin metode de transformare cum este eliminarea gaussian cu diferite strategii de a pivotare.

2.2

Preliminarii

Un sistem de n ecuatii liniare cu n necunoscute, scris form matriceal n a a Ax = b, (2.1)

unde matricea A = (aij )i=1:m,j=1:n Rnn i vectorul b = (bi )i=1:n Rn sunt s date, iar x = (xj )j=1:n Rn este vectorul necunoscutelor se numete sistem liniar s determinat. Sistemul (2.1) admite a solutie unic pentru toti b Rn dac i numai dac a a s a matricea A este nesingular, i.e. inversabil. a a Intr-un astfel de caz unica solutie a sistemului (2.1) se scrie x = A1 b. (2.2) Trebuie s subliniem c formula (2.2) nu este recomandat pentru calculul solutiei a a a sistemului Ax = b, dup cum nu sunt recomandate i alte metode bine cunoscute a s cum este regula lui Cramer etc.

LABORATOR 2. REZOLVAREA SISTEMELOR LINIARE DETERMINATE

Vom prezenta o categorie de metode abile i eciente de rezolvare a sistemelor s determinate i anume aa numitele metode directe, bazate pe reducerea, printr-o s s secventa nit de transformri elementare, la rezolvarea, prin simpl substitutie, a a a a unuia sau a dou sisteme triunghiulare. aceast categorie intr metode precum a In a a eliminarea gaussian sau factorizrea LU. a a

2.2.1

Rezolvarea sistemelor triunghiulare

O matrice L Rnn , cu lij = 0 pentru toti i < j se numete inferior triunghiular. s a nn , cu u = 0 pentru toti i > j se numete superior triunghiular. O matrice U R s a ij Sistemul Ax = b se numete inferior (superior) triunghiular dac matricea A este s a inferior (superior) triunghiular. O matrice triunghiular is nesingular dac i a a a a s numai dac toate elementele sale diagonale sunt nenule. a Algoritmii pentru rezolvarea sistemelor triunghiulare sunt foarte simpli, ntruct a necunoscutele pot calculate, ntr-o ordine denit, prin substitutie numeric dia a rect. Considerm, mai ai, un sistem inferior triunghiular a a nt Lx = b, unde L Rnn , cu lij = 0 pentru i < j, lii = 0, i = 1 : n, i b Rn . Prima ecuatie s este l11 x1 = b1 , de unde x1 = b1 /l11 . general, dac tim x1 , x2 , . . . , xi1 , putem rezolva ecuatia i In as
i1

(2.3)

lik xk + lii xi = bi
k=1

i obtinem s
i1

xi =

bi

lik xk /lii .
k=1

(2.4)

Formulele (2.3) i (2.4) denesc un algoritm pentru calculul solutiei sistemului Lx = s b, cunoscut sub denumirea de metoda substitutiei nainte. Algoritm 2.1 (S INF TR) (Dat o matrice L Rnn , nesingular, a a inferior triunghiular i un vector b Rn , algoritmul calculeaz solutia as a x a sistemului Lx = b.) 1. pentru i = 1 : n 1. s bi 2. dac i > 1 atunci a 1. pentru k = 1 : i 1 1. s s lik xk 3. xi s/lii

2.2. PRELIMINARII

Acest algoritm necesit NSI N FT R n2 opi i MS IN F T R n2 /2 locatii de a s memorie. Dac vectorul b nu mai este necesar, solutia x poate suprascrie vectorul b a pe msur ce este calculat. a a a Pentru a rezolva un sistem liniar superior triunghiular nesingular U x = b, unde U este o matrice superior triunghiular de ordinul n, cu uii = 0, i = 1 : n, i a s b Rn , s observm c ultima ecuatie este a a a unn xn = bn , din care avem xn = bn /unn . (2.5)

Mai mult, dac xn , xn1 , . . . , xi+1 , sunt deja calculate, atunci, din ecuatia i a
n

uii xi +
k=i+1

uik xk = bi

obtinem

xi = bi

n k=i+1

uik xk /uii .

(2.6)

Din formulele (2.5) i (2.6), care denesc aa numita substitutie s s napoi, obtinem urmtorul algoritm. a Algoritm 2.2 (S SUP TR) (Dat o matrice n n real U , superior a a n , acest algoritm calculeaz triunghiular, nesingular i un vector b R a as a solutia x a sistemului U x = b.) 1. pentru i = n : 1 : 1 1. s bi 2. dac i < n atunci a 1. pentru k = i + 1 : n 1. s s uik xk 3. xi s/uii Ca i cazul inferior triunghiular, efortul de calcul este dat de NS s n opi i memoria necesar este MS SU P T R n2 /2 locatii. s a
SU P T R

= n2

LABORATOR 2. REZOLVAREA SISTEMELOR LINIARE DETERMINATE

2.3

Eliminarea gaussian a

Eliminarea gaussian este o tehnic pentru reducerea sistemului Ax = b la un sistem a a superior triunghiular echivalent M Ax = M b , i.e. cu matricea U = M A superior triunghiular. Matricea de transformare M a este o matrice inferior triunghiular unitar obtinut ca o secventa (produs) de a a a transformri (matrice) inferior triunghiulare elementare a M = Mn1 Mn2 . . . M1 . O matrice inferior triunghiular elementar de ordin n i indice k este o matrice de a a s forma Mk = In mk eT , mk = [0 0 0kk k+1,k nk ]T . k Triangularizarea de mai sus exist dac toate submatricele lider principale A[k] = a a A(1 : k, 1 : k) sunt nesingulare, iar procesul de triangularizare are loc conform schemei de calcul 1. pentru k = 1 : n 1 1. Se determin matricea ITE Mk , i.e. scalarii ik , i = k + 1 : n a astfel at (Mk A)ik = 0, i = k + 1 : n nc 2. A Mk A. Scalarii ik , numiti multiplicatori gaussieni, care asigur satisfacerea conditiei a de la 1.1 au expresia ik = aik /akk , i = k + 1 : n, i pot memorati locul zerourilor create. Operatia A Mk A se execut ecient s n a dac inem seama c primele k 1 coloane ale lui A nu sunt afectate, coloana k este at a afectat a ntr-un mod cunoscut, iar coloanele aj , j k + 1 : n sufer transformarea a (Mk aj )i = ((In mk eT )aj )i = (aj mk akj )i = aij ik akj , i = k + 1 : n. k Cele prezentate mai sus denesc algoritmul G de eliminare gaussian descris mai a jos. Algoritm 2.3 (G) (Dat o matrice A Rnn cu submatricele lider a principale A[k] , k = 1 : n 1, nesingulare, acest algoritm suprascrie triunghiul superior al lui A, inclusiv diagonala, cu matricea superior triunghiular U = Mn1 Mn2 . . . M1 A. Triunghiul inferior al lui A este a suprascris cu multiplicatorii gaussieni ik care denesc matricele ITE Mk , k = 1 : n 1.)

2.3. ELIMINAREA GAUSSIANA 1. pentru k = 1 : n 1 1. pentru i = k + 1 : n 1. aik ik = aik /akk 2. pentru i = k + 1 : n 1. pentru j = k + 1 : n 1. aij aij ik akj Efortul de calcul este NG locatii.
2n3 3

opi, timp ce memoria necesar este MG = n2 n a

Observatie. Nesingularitatea submatricelor lider principale ale matricei A nu este o conditie necesar pentru existenta i unicitatea solutiei unui sistem de forma a s Ax = b. Pentru a elimina aceast conditie vom introduce pivotarea. a

2.3.1

Strategii de pivotare

Singularitatea submatricelor lider principale A[k] este echivalent cu anularea elea mentului akk , numit pivot, la pasul k al algoritmului G. Ca urmare, calculul multiplicatorilor gaussieni nu se poate face. Intr-un astfel de caz, este necesar aducerea a pe pozitia pivotului a unui element nenul, preferabil de modul ct mai mare, prin a permutare de linii i/sau coloane. s Intruct interschimbarea a dou linii ale unei matrice este echivalent cu prea a a multiplicarea acelei matrice cu o matrice de permutare elementar iar interschima barea a dou coloane este echivalent cu postmultiplicarea matricei cu o matrice a a de permutare elementar, a ntregul proces de pivotare poate descris termeni n matriceali ntr-unul din dou urmtoare moduri. a a Pivotare partial a Pivotarea partial are loc prin permutarea numai a liniilor. La pasul k al algorit a mului G se aduce pozitia (k, k) a pivotului cel mai mare element modul dintre n n elementele subdiagonale din coloana k, e acesta aik k = 0, prin permutarea liniilor k i ik . Acest lucru este echivalent cu premultiplicarea matricei A cu matricea de s not permutare elementar Pik k = Pk , astfel at pasul k realizeaz a nc a A Mk Pk A, iar ntregul algoritm realizeaz triangularizarea matricii A prin secventa a A U = Mn1 Pn1 Mn2 Pn2 . . . M1 P1 A. Algoritmul corespunztor este dat mai jos. a

LABORATOR 2. REZOLVAREA SISTEMELOR LINIARE DETERMINATE Algoritm 2.4 (GPP eliminarea gaussian cu pivotare partial) a a nn , algoritmul suprascrie triunghiul superior al (Dat o matrice A R a lui A cu matricea superior triunghiular U = Mn1 Pn1 . . . M1 P1 A. Tria unghiul strict inferior al lui A este suprascris de multiplicatorii gaussieni ik ce denesc matricele ITE Mk , k = 1 : n 1, iar ntregii ik , denind permutrile de linii, sunt memorati a ntr-un vector p, astfel at p(k) = nc ik , pentru k = 1 : n 1.) 1. pentru k = 1 : n 1 1. Se determin primul ik k : n astfel at a nc |aik k | = maxi=k:n |aik |. 2. p(k) ik 3. pentru j = k : n 1. akj aik j 4. pentru i = k + 1 : n 1. aik ik = aik /akk 5. pentru i = k + 1 : n 1. pentru j = k + 1 : n 1. aij aij ik akj

Complexitatea algoritmului GPP este aceeai cu cea a algoritmului G. s Pivotare complet a Proprieti numerice mai bune se obtin dac pivotul de la pasul k se alege drept cel at a mai mare element modul dintre elementele aij , cu i = k : n, j = k : n. Acest n cel mai mare element modul, e el aik jk , este adus pozitia (k, k) a pivotului n n prin permutarea liniilor k i ik i a coloanelor k i jk . Acest lucru este echivalent s s s not cu premultiplicarea matricei A cu matricea de permutare elementar Pik k = Pk i a s not cu postmultiplicarea cu matricea de permutare elementar Qjk k = Qk , astfel at a nc pasul k realizeaz a A Mk Pk AQk , iar ntregul algoritm realizeaz triangularizarea matricii A prin secventa a A U = Mn1 Pn1 . . . M2 P2 M1 P1 AQ1 Q2 Qn1 . Algoritmul corespunztor, de eliminare gaussian cu pivotare complet, este dat a a a mai jos. Algoritm 2.5 (GPC eliminarea gaussian cu pivotare complet) a a (Dat a matrice A Rnn , acest algoritm suprascrie triunghiul superior a al lui A cu matricea superior triunghiular U . Triunghiul strict inferior a al lui A este suprascris cu multiplicatorii gaussieni ik , k = 1 : n 1, i = k + 1 : n. Intregii ik i jk , ce denesc permutrile de linii, respectiv s a coloane, sunt memorati doi vectori p i q, astfel at p(k) = ik i n s nc s q(k) = jk , pentru k = 1 : n 1.)

2.4. REZOLVAREA SISTEMELOR LINIARE DETERMINATE 1. pentru k = 1 : n 1 1. Se determin ik k : n i jk k : n astfel at a s nc |aik jk | = maxi=k:n,j=k:n |aij |. 2. p(k) ik 3. q(k) jk 4. pentru j = k : n 1. akj aik j 5. pentru i = 1 : n 1. aik aijk 6. pentru i = k + 1 : n 1. aik ik = aik /akk 7. pentru i = k + 1 : n 1. pentru j = k + 1 : n 1. aij aij ik akj Complexitatea algoritmului GPC este aceeai cu cea a algoritmului G. s

2.4

Rezolvarea sistemelor liniare determinate

Aa cum s-a precizat, algoritmii GPP i GPC stau la baza unei metode de rezolvare s s a sistemelor liniare nesingulare Ax = b. Dei din punct de vedere numeric algoritmul s GPC este mai bun, GPP is sucient de bun pentru necesitile practice curente i, at s de aceea, este folosit pe scar larg. a a Admitand c desfacem matricea A rezultat din algoritmii GPP i GPC ma a a s n tricele componente: matricea superior triunghiular U i matricea strict inferior a s triunghiular M a multiplicatorilor gaussieni, introducem urmtoarele sintaxe de a a utilizare a algoritmilor GPP i GPC s [ M, U, p ] = GPP(A) [ M, U, p, q ] = GPC(A).

Considerm sistemul liniar Ax = b, cu A nesingular. Evident, sistemul Ax = b a a este echivalent cu sistemul Mn1 Pn1 . . . M1 P1 Ax = Mn1 Pn1 . . . M1 P1 b, unde Mk , Pk sunt matricele utilizate de GPP, i.e. cu sistemul superior triunghiular U x = Mn1 Pn1 . . . M1 P1 b, Deci, pentru a rezolva Ax = b, trebuie s calculm vectorul a a b d = Mn1 Pn1 . . . M1 P1 b, folosind urmtoarea schem: a a

LABORATOR 2. REZOLVAREA SISTEMELOR LINIARE DETERMINATE 1. pentru k = 1 : n 1 1. b Pk b 2. b Mk b. Algoritmul corespunztor este dat mai jos. a Algoritm 2.6 (SL GPP Rezolvarea sistemelor liniare cu GPP) (Dat o matrice nesingular A Rnn i un vector b Rn , acest ala a s goritm calculeaz solutia x Rn sistemului liniar Ax = b, folosind a eliminarea gaussian cu pivotare partial.) a a 1. [ M, U, p ] = GPP(A) 2. pentru k = 1 : n 1 1. bk bp(k) 2. pentru i = k + 1 : n 1. bi bi ik bk 3. x = S SUP TR(U, b) Complexitatea algoritmului este dat de a
n1

NSL

GP P

= NGP P +
k=1

2(n k) + NU T RIS

2n3 2n3 + n2 + n2 NGP P . 3 3

cazul utilizrii algoritmului GPC sistemul Ax = b este echivalent cu sistemul In a Mn1 Pn1 . . . M1 P1 AQ1 . . . Qn1 Qn1 . . . Q1 x = Mn1 Pn1 . . . M1 P1 b. Notnd a Qn1 . . . Q1 x = y, rezult c y poate calculat ca solutie a sistemului superior triunghiular U y = d, a a unde d = Mn1 Pn1 . . . M1 P1 b. Din expresia lui y avem x = Q1 Q2 . . . Qn1 y care poate calculat cu schema 1. x y 2. pentru k = n 1 : 1 : 1 1. x Qk x. Rezult algoritmul. a Algoritm 2.7 (SL GPC rezolvarea sistemelor liniare cu GPC) (dat o matrice nesingular A Rnn i un vector b Rn , acest ala a s goritm calculeaz solutia x Rn a sistemului liniar Ax = b, folosind a eliminarea gaussian cu pivotare complet.) a a

2.5. SARCINI DE LUCRU 1. [ M, U, p, q ] = GPC(A) 2. pentru k = 1 : n 1 1. bk bp(k) 2. pentru i = k + 1 : n 1. bi bi ik bk 3. x = S SUP TR(U, b) 4. pentru k = n 1 : 1 : 1 1. xk xq(k)

2.5
2.5.1

Sarcini de lucru
A. In laborator

1. Se elaboreaz i editeaz programe, sub forma unor functii MATLAB, pentru as a implementarea algoritmilor de rezolvare a sistemelor liniare inferior i superior s triunghiulare. 2. Se testeaz corectitudinea algoritmilor i programelor pentru sisteme triunghia s ulare cu coecienti aleatori de 7 i 25 de ecuatii. s 3. Se elaboreaz i editeaz un program, sub forma unei functii MATLAB, pentru as a implementarea algoritmului G de triangularizare prin eliminare gaussian i se as testeaz corectitudinea algoritmului i programului pentru matrice cu elemente a s aleatoare de ordinul 7 i 25. Ce se ampl dac s nt a a nainte de apelul functiei executati instructiunea A(1,1:2)=A(2,1:2)? 4. Se elaboreaz i editeaz un program, sub forma unei functii MATLAB, pentru as a implementarea algoritmului GPP de triangularizare prin eliminare gaussian a cu pivotare partial i se testeaz corectitudinea algoritmului i programului as a s pentru matrice cu elemente aleatoare de ordinul 7 i 25. s 5. Se elaboreaz i editeaz un program, sub forma unei functii MATLAB, pentru as a implementarea algoritmului de rezolvare a sistemelor liniare Ax = b folosind programul GPP de triangularizare prin eliminare gaussian cu pivotare para ial i se testeaz corectitudinea algoritmului i programului pentru sisteme t as a s liniare de 7 i 25 de ecuatii cu 7, respectiv 25 de necunoscute. s

2.5.2

B. Acas a

1 Se elaboreaz i editeaz programe, sub forma unor functii MATLAB, pentru as a implementarea algoritmilor de rezolvare a sistemelor liniare inferior i supes rior bidiagonale i se testeaz corectitudinea lor pentru sisteme bidiagonale cu s a coecienti aleatori de 100 i 500 de ecuatii. s

10 LABORATOR 2. REZOLVAREA SISTEMELOR LINIARE DETERMINATE 2 Se elaboreaz i editeaz un program, sub forma unei functii MATLAB, pentru as a implementarea algoritmului GPC de triangularizare prin eliminare gaussian a cu pivotare partial i se testeaz corectitudinea algoritmului i programului as a s pentru matrice cu elemente aleatoare de ordinul 100 i 500. s 3 Se elaboreaz i editeaz un program, sub forma unei functii MATLAB, pentru as a implementarea algoritmului de rezolvare a sistemelor liniare Ax = b folosind programul GPC de triangularizare prin eliminare gaussian cu pivotare coma plet i se testeaz corectitudinea algoritmului i programului pentru sisteme as a s liniare de 100 i 500 de ecuatii cu 100, respectiv 500 de necunoscute. s

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