Sunteți pe pagina 1din 7

LABORATOR 2 - SISTEME DE ECUATII LINIARE.

METODA LUI GAUSS

Reamintim c a un sistem de n ecua tii algebrice liniare cu n necunoscute este de forma: 8 a11 x1 + a12 x2 + ::: + a1n xn = b1 > > < a21 x1 + a22 x2 + ::: + a2n xn = b2 : ::::::::::::::::::::::::::: > > : an1 x1 + an2 x2 + ::: + ann xn = bn

(1)

Dac a not am cu A matricea coecien tilor, cu x vectorul coloan a al necunoscutelor si cu b coloana al termenilor liberi, sistemul (1) se scrie sub form a matriceal a: Ax = b; unde: 2 a11 a21 . . . an1 a12 a22 . . . an2 ::: ::: a1n a2n . . . 3 2 x1 x2 . . . xn 3 2 b1 b2 . . . bn 3

(2)

6 6 A=6 4

::: ann

6 7 6 7 7;x = 6 4 5

6 7 6 7 7;b = 6 4 5

7 7 7: 5

Metodele numerice de rezolvare a sistemelor algebrice de ecua tii liniare sunt de dou a tipuri: metode directe si metode indirecte (sau iterative ). Metodele directe constau n transformarea sistemului (1) ntr-un sistem triunghiular echivalent, care se rezolv a u sor. Cele mai cunoscute metode directe sunt: metoda Gauss, metoda Cholesky (utilizat a pentru sistemele n care matricea A este simetric a si pozitiv denit a) si metoda Householder. Metodele directe permit determinarea solu tiilor sistemului n cazul ideal, cnd nu avem erori de rotunjire. Num arul opera tiilor efectuate este de ordinul n3 : Pentru sisteme cu un num ar de ecua tii mai mare de 100, metodele directe devin inutilizabile datorit a acumul arii erorilor de rotunjire care altereaz a solu tia. Metodele indirecte (sau iterative ) constau n construc tia unui sir (x(k) ) de vectori n-dimensionali, care converge la solu tia exact a a sistemului. Se alege ca solu tie aproximativ a a sistemului un termen x(s) al sirului, al c arui ordin depinde de precizia impus a. O itera tie presupune efectuarea unui num ar de opera tii aritmetice de ordinul n2 : Metodele iterative sunt utilizate la reolvarea sistemelor mari de ecua tii. Cele mai cunoscute metode iterative sunt: Jacobi, Gauss-Siedel, metodele de relaxare.
1

1. Metoda Gauss. Factorizarea LU Fie 2 0 . . . 3 0 7 6 . 7 7 6 . 7 6 . 7 7 6 1 7 7 6 7 7 7 si er = 6 0 7 6 7 7 6 . 7 7 4 . 5 . 5 0 3 2

(elementul 1 din er se a a pe linia r). T O matrice de forma M = In mr eT ste r ; unde er = [0; :::; 0; 1; 0; :::; 0]; se nume matrice Frobenius. O astfel de matrice are urm atoarea structur a: 2 3 1 0 0 ::: 0 6 7 .. 6 7 . 6 7 6 0 1 0 ::: 0 7 7: Mr = 6 6 0 mr+1;r 1 ::: 0 7 6 7 6 7 . . . . 4 5 . . 0 mn;r 0 ::: 1 De exemplu, dac an=4 si r = 2; avem: 3 2 2 3 0 1 0 0 0 6 0 1 0 0 7 6 0 7 7 6 7 M2 = 6 4 0 0 1 0 5 4 m32 5 0 0 0 1 m42 3 2 2 0 0 1 0 0 0 6 0 1 0 0 7 6 0 0 7 6 = 6 4 0 0 1 0 5 4 0 m32 0 m42 0 0 0 1 3 2 1 0 0 0 6 0 1 0 0 7 7: = 6 4 0 m32 1 0 5 0 m42 0 1 (In
T T mr eT r ) (In + mr er ) = In + mr er

6 6 6 6 0 m=6 6 mr+1;r 6 6 . . 4 . mn;r

3 0 0 0 0 7 7 1 0 5 0 1

Matricile Frobenius sunt inversabile, dup a cum se va vedea n continuare: mr eT r


T mr (eT r mr ) er :

Deoarece eT mr = 0; rezult a: Mr (In + mr eT a c a r r ) = In :Analog se arat T (In + mr er ) Mr = In ; deci Mr este inversabil a si Mr 1 = (In + mr eT ) : r Ar at am n continuare c a pentru orice matrice p atratic a A de ordinul n care satisface 2 3 a11 ::: a1r 6 . 7 . . det 4 . . . 5 6= 0 pentru orice r = 1; :::; n 1; ar1 arr exist a o matrice inferior triunghiular a M 2 Mn (R) astfel nct U = M A este superior triunghiular a.

Deoarece a11 6= 0; putem considera matricea 2 1 0 ::: 6 a21 1 0 6 a 11 6 M1 = 6 . . 6 . 4 a n1 0 ::: a11

Dac a not am A1 = A si A2 = M1 A1 ; atunci avem 2 (2) (2) (2) a11 a12 ::: a11 6 (2) (2) 6 0 a22 ::: a2n 6 A2 = 6 . . . . . 4 . . . . 0 an2
(2)

Frobenius 3 ::: 0 ::: 0 7 7 7 7: . . . 7 5 ::: 1 3

::: ann

(2)

unde, notnd cu aij = aij ; pentru i; j = 1; :::; n; avem: a1j = a1j ; pentru j = 1; :::; n; si aij = aij Observ am c a
(2) (2) (1)

(1)

7 7 7; 7 5

(2)

(1)

ai1 a1j a11


(1)

(1) (1)

; pentru i; j = 2; :::; n:

a22 = a11 Dac a not am

a21 a12 1 = a11 a11 2 0 1 (2) a32 a22 . . . a22 a11 0 0 . . . 0


(3) (2)

a11 a21

a12 a11

6= 0:

atunci

1 6 0 6 6 6 6 0 6 M2 = 6 6 . 6 . 6 . 6 4 0

an2

(2)

(2)

A3 = M2

6 6 6 A2 = 6 6 6 4

3 0 ::: 0 0 ::: 0 7 7 7 7 1 ::: 0 7 7 7; 7 . . . . . . 7 7 7 5 0 ::: 1


(3)

a12 (3) a22 0 . . . 0

a13 (3) a23 (3) a33 . . . an3


(3)

(3)

::: a1n (3) ::: a2n (3) ::: a3n . . . :::


(3) aij

(3)

ann =

(3)

7 7 7 7; 7 7 5

unde

(3) aij

(2) aij ;

pentru i = 1; 2; j = 1; :::; n; si

(2) aij

ai2 a2j a22


(2)

(2) (2)

; pentru

i; j = 3; :::; n: Un calcul simpu ne arat a c a a33 = a33


(3) (2)

a32 a23 a22


(2)

(2) (2)

1 a11 a22
(1) (2)

a11 a21 a31

a12 a22 a32

a13 a23 a33

6= 0:

n general, arr 6= 0 si se poate ar ata considera matricea Frobenius: 6 6 6 6 0 6 6 6 Mr = 6 0 6 6 6 6 6 4 0 2


(r +1)

(r )

1 .. .

0 1 :::
(r ) ar+1;r (r ) arr

0 0

::: :::

:::

. . . (r ) anr arr
(r )

0 :::

7 7 7 0 7 7 7 7 0 7: 7 7 7 7 7 5 1
(r +1)

Dac a not am cu Ar+1 = Mr Ar ; atunci 6 6 6 6 6 6 =6 6 6 6 6 6 4


(r )

a11 0 . . .

a12 (r +1) a22 . . . 0 0 . . . 0

(r +1)

::: a1r (r +1) ::: a2r . . . ::: arr ::: 0 . . . ::: 0


(r +1)

(r +1)

::: ::: ::: ar+1;r+1 . . . (r +1) an;r+1


(r +1) (r +1)

a1n (r +1) a2n . . . arn (r +1) ::: ar+1;n . . . (r +1) ::: ann
(r ) (r +1)

Ar+1

0 0 . . . 0

7 7 7 7 7 7 7; 7 7 7 7 7 5
(r )

unde aij

(r +1)

= aij ; pentru i = 1; :::; r; j = 1; :::; n; si aij

= aij

air arj arr

( r ) (r )

; pentru

i; j = r + 1; :::; n: n nal se ob tine matricea superior triunghiular a 6 6 ::: M2 M1 A = 6 6 4 Mn


2

U = An = Mn

a11 0 . . . 0

( n)

a12 ( n) a22 . . . 0

( n)

::: a1r ( n) ::: a2n . . . ::: ann


( n)

( n)

7 7 7: 7 5

Not am cu M = Mn 2

5 Exemplul 1. A1 = 4 5 4 2 3 5 2 1 6 0 7 8 1 A2 = 4 5; 18 9 0 5 25 5 2 1 6 0 8 1 U = A3 = 4 9 0 0 4

::: M2 M1 si astfel ob tinem 2 3 1 0 0 2 1 6 1 1 0 5 6 2 ; M1 = 4 4 2 1 0 1 2 3 5 1 0 0 6 0 1 0 7 M2 = 4 5; 9 0 1 20 3 2 1 0 7 6 1 1 M = M1 M2 = 4 5; 7 9 20 20

c a U = M A: 3 7 5;

3 0 0 7: 5 1

Consider am sistemul: 8 < 5x1 + 2x2 + x3 = 12 5x1 6x2 + 2x3 = 1 ; : 4x1 + 2x2 + x3 = 3

Num arul opera tiilor pentru determinarea matricei U s i a vectorului M b (r ) air (r ) ;apoi nmul tirile cu arj ; r + 1 j n; Pentru o linie xat a i se calculeaz a (r ) arr (r ) (r +1) si se adun a aij ; r + 1 j n: La fel si cu bi : Sunt 2(n r) + 3 opera tii pentru ecare linie i; r +1 i n; iar pebtru ecare etap a vor (n r)[2(n r)+3] opera tii. n X 2 1 7 2(n r)2 + 3(n r) = n3 + n2 n total vor n opera tii elementare. 3 2 6 r =1 Dac a ad aug am si cele n2 opera tii pentru rezolvarea sistemului triunghiular, rezult a 2 3 3 2 7 c a num arul de opera tii pentru rezolvarea sistemului Ax = b este n + n n: 3 2 6 1 a cum s-a v azut mai nainte, Lr este de n continuare not am cu Lr = Mr : Dup a: forma In + mr eT r , adic 6 6 6 6 0 6 6 6 Lr = 6 0 6 6 6 6 6 4 0 2 1 .. . 1 (r ) ar+1;r arr . . . ::: arr
(r )

a c arui solu tie este x1 = 1; x2 = 2; x3 = 3: Sub form a matriceal a sistemul se scrie: Ax = b: Acest sistem este echivalent cu urm atorul sistem: (M2 M1 A)x = (M2 M1 )b: Efectund calculele se ob tine: 8 > < 5x1 + 2x2 + x3 = 12 8x2 + x3 = 13 : 27 9 > : x3 = 4 4

:::

:::

anr

(r ) (r )

7 7 7 0 ::: 0 7 7 7 7 0 7: 7 7 7 7 7 5 0 ::: 1

Dac a not am cu L = L1 L2 ::: Ln 1 ; atunci L este o matrice inferior triunghiular a de felul urm ator: 3 2 1 0 0 ::: 0 6 l21 1 0 ::: 0 7 6 7 L=6 . 7: . . . . . . 4 . . . . . 5 ln1 ln2 ln3 ::: 1 Deoarece A = M1
1

M2

::: Mn 11 U; rezult a c a: A = L U:

(3)

3 a11 ::: a1r 6 . 7 . . A sadar, orice matrice p atratic a ce ndepline ste condi tia det 4 . . . 5 6= ar1 arr 0 pentru orice r = 1; :::; n 1; admite o descompunere unic a sub forma (3), unde L este inferior triunghiular a avnd elementele de pe diagonala principal a egale cu 1 si U este superior triunghiular a. Descompunerea (3) este cunoscut a sub numele de factorizarea LU . Algoritmul pentru factorizarea LU este programat n MATLAB si poate apelat cu secven ta [L; U ] = lu(A) (se a seaz a cele dou a matrici). n exemplul precedent avem: 3 2 3 2 1 0 0 1 0 0 6 6 1 0 7; 1 0 7; L2 = 4 0 L1 = 4 1 5 5 9 4 0 0 1 1 5 20 2 3 2 3 2 3 1 0 0 5 2 1 5 2 1 6 1 7 6 0 7 4 1 0 8 1 5 6 2 5: A = L U =4 5 4 5= 4 9 9 4 2 1 1 0 0 5 20 4 ar tiObserva tia 1. Dac a pivotul este "foarte mic", adic a arr << 1, atunci mp rile la acest pivot produc erori de rotunjire foarte mari, care altereaz a solu tia. n acest caz se recomand a schimbarea pivotului. Se poate alege un nou pivot o n (r ) (r ) a j r j n = a = max r rr ir
r (r )

sau

= ajr = max

(r )

Aceasta presupune schimbarea ntre ele a dou a linii si eventual a dou a coloane. D am n continuare algoritmul MATLAB pentru rezolvarea prin metoda lui Gauss a sistemelor de ecua tii liniare, f ar a schimbarea pivotului. Algoritmul Gauss % Introducere matrice A a coecien tilor % Introducere vector b al termenilor liberi % Introducere n, dimensiunea matricii A A_v=A; b_v=b; for r=1:n-1 fprintf( Etapa %g ,r); for i=r+1:n for j=1:n A(i,j)=A_v(i,j)-(A_v(i,r)*A_v(r,j))/A_v(r,r); end b(i)=b_v(i)-A_v(i,r)*b_v(r)/A_v(r,r); end A_v=A; b_v=b; end

akl j r

(r )

n; 1

o n :

%rezolvarea sistemului triunghiular x=zeros(n,1); x(n)=b(n)/A(n,n); for i=n-1:-1:1 s=0; for j=i+1:n s=s+A(i,j)*x(j); end x(i)=(b(i)-s)/A(i,i); end disp( Solutia sistemului prin metoda lui Gauss ); x