12
Metode Numerice - Lucrarea de laborator 4 1 Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil determinate - Implementarea în Maple a unei metode iterative de rezolvare a unui sistem liniar. II. Conținutul lucrării 1. Prezentarea metodei de eliminare Gauss cu pivotare parțială 2. Rezolvarea sistemelor liniare compatibil determinate cu n ecuații și n necunoscute prin metode directe - procedura MAPLE. 3. Metode iterative de rezolvare a sistemelor liniare: metoda lui Jacobi III. Prezentarea lucrării III. 1. Prezentarea metodei de eliminare Gauss cu pivotare parțială Se consideră o matrice AMn,m(R). Eliminarea gaussiană urmărește transformarea matricei A într-o matrice superior triunghiulară S (o matrice cu proprietatea că bij = 0 pentru orice i<j). Trecerea de la matricea A la matricea S se realizează prin transformări elementare. La baza metodei stă următorul procedeu: prima linie este folosită pentru anularea coeficienților de pe prima coloană din celelalte n-1 linii. a doua linie este utilizată pentru anularea coeficienților de pe a doua coloană din ultimele n-2 linii, ș.a.m.d. Trecerea de la un pas la altul se face aplicând regula dreptunghiului (pivotului). Pentru a obține stabilitatea numerică a algoritmului, se alege drept pivot de la pasul k elementul maxim în modul din coloana k subdiagonală a lui A, și se permută linia k cu linia pe care se găsește pivotul. Această strategie de permutare se numește pivotare parțială. Performanțe de stabilitate numerică relativ mai bune se obțin dacă se alege drept pivotul la pasul k elementul maxim în modul din submatricea delimitată de

Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Metode Numerice - Lucrarea de laborator 4

1

Lucrarea de laborator nr. 4

I. Scopul lucrării

- Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor

liniare compatibil determinate

- Implementarea în Maple a unei metode iterative de rezolvare a unui sistem

liniar.

II. Conținutul lucrării

1. Prezentarea metodei de eliminare Gauss cu pivotare parțială

2. Rezolvarea sistemelor liniare compatibil determinate cu n ecuații și n necunoscute prin

metode directe - procedura MAPLE.

3. Metode iterative de rezolvare a sistemelor liniare: metoda lui Jacobi

III. Prezentarea lucrării

III. 1. Prezentarea metodei de eliminare Gauss cu pivotare parțială

Se consideră o matrice AMn,m(R). Eliminarea gaussiană urmărește

transformarea matricei A într-o matrice superior triunghiulară S (o matrice cu

proprietatea că bij = 0 pentru orice i<j). Trecerea de la matricea A la matricea S se

realizează prin transformări elementare. La baza metodei stă următorul procedeu:

prima linie este folosită pentru anularea coeficienților de pe prima coloană

din celelalte n-1 linii.

a doua linie este utilizată pentru anularea coeficienților de pe a doua coloană

din ultimele n-2 linii, ș.a.m.d.

Trecerea de la un pas la altul se face aplicând regula dreptunghiului (pivotului).

Pentru a obține stabilitatea numerică a algoritmului, se alege drept pivot de la pasul k

elementul maxim în modul din coloana k subdiagonală a lui A, și se permută linia k

cu linia pe care se găsește pivotul. Această strategie de permutare se numește pivotare

parțială. Performanțe de stabilitate numerică relativ mai bune se obțin dacă se alege

drept pivotul la pasul k elementul maxim în modul din submatricea delimitată de

Page 2: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Mădălina Roxana Buneci Metode Numerice –Laborator

2

ultimele n-k linii, și se permută coloana k cu coloana pivotului și linia k cu linia

pivotului. Această strategie de pivotare se numește pivotare completă. Prezentăm în

continuare algoritmul de eliminare Gauss cu pivotare parțială. Trecerea de la matricea

A la matricea superior triunghiulară se realizează în nmin pași, unde nmin = min(n,m):

A(0) A(1)… A(nmin),

unde A(nmin) are formă superior triunghiulară, iar A(0) =A.

Pentru a se trece de la A(k)A(k+1):

Se determină pivotul de la pasul k; acesta este primul element k

k,ia de

pe coloana k cu proprietatea

| k

k,ia |=max{| k

k, ja |, kjn}

Se permută liniile i cu k;

Se aplică regula dreptunghiului (pivotului) cu pivotul k

k,ka . Astfel:

elementele de pe linia pivotului se împart la pivot:

a)1k(

i,k

=

k

k,i

k

k,k

a

a, i=k,k+1,…m

elementele subdiagonale de pe coloana pivotului se înlocuiesc cu

0.

1k

ika =0, i= k+1, k+2,…n

elementele din submatricea delimitată de ultimele n-k linii și de

ultimele n-k coloane se transformă cu regula dreptunghiului:

k j

k (k)k,ka

(k)k, ja

i (k)i,ka

(k)i, ja

Page 3: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Metode Numerice - Lucrarea de laborator 4

3

k 1

i, ja

=

(k) (k) (k) (k)i, j k,k k,j i,k

(k)k,k

a a a a

a

, k+1 i n, k+1 j m.

În urma aplicării acestui algoritm se ajunge la următoarea matrice superior

triunghiulară:

1 a)1(2,1 a

)1(3,1 a )1(

n,1 a)1(

1n,1 a)1(m,1

A(nmin) = 0 1

a23,2 a )2(

n,2

a2

1n,2

a2m,2

0 0 0 1 a

n1n,n

an

m,n

(dacă m n).

Considerăm sistemul cu n ecuații și n necunoscute.

Ax = b, AMn,n(R) nesingulară

Pentru rezolvarea acestui sistem vom aplica algoritmul de eliminare Gauss cu

pivotarea parțială asupra matricei extinse b|AA . Vom nota elementele matricei

A tot cu ai,j . Astfel ai,n+1= bi pentru orice i=1,2,..n.

La primul pas algoritmul presupune eliminarea necunoscutei x1 din ultimele n-

1 ecuații. La al doilea pas se elimină necunoscuta x2 din ultimele n-2 ecuații, ș.a.m.d.

În cazul acestui algoritm pentru fiecare k se efectuează n+1-k + (n+1-k)(n-k) = (n+1-

k)2 operații elementare (prin operație elementară înțelegând aici o operație în virgulă

mobilă de forma ax + b, sau o împărțire) . Deci algoritmul necesită

Nop(n) = n 1

2

k 1

n 1 k

=n

2

j 2

j

= n n 1 2n 1

6

- 1

operații elementare. Deci Nop(n) ~ 3

n 3

(sau Nop(n) O(n3) ).

Ca urmare a aplicării algoritmului se obține sistemul echivalent:

Page 4: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Mădălina Roxana Buneci Metode Numerice –Laborator

4

x1 + a)1(2,1 x2 + a

)1(3,1 x3 + a )1(

n,1 xn = a)1(

1n,1

x2 + a

23,2 x3+ a )2(

n,2 xn = a

21n,2

xn = a

n1n,n

Rezolvarea acestui sistem se poate face foarte ușor de la sfârșit spre început:

xn = a

n1n,n

n

1ij

jij,i

i1n,ii xaax

III.2. Rezolvarea sistemelor liniare compatibil determinate cu n ecuații și

n necunoscute prin metode directe- procedura MAPLE.

Considerăm sistemul cu n ecuații și n necunoscute.

Ax = b, AMn,n(R) nesingulară

Pentru rezolvarea acestui sistem vom aplica algoritmul de eliminare Gauss cu

pivotarea parțială asupra matricei extinse b|AA . Vom nota elementele matricei

A tot cu ai,j . Astfel ai,n+1= bi pentru orice i=1,2,..n.

Procedura rezsist de mai jos întoarce soluția unui sistem liniar cu n ecuații și n

necunoscute. Parametri procedurii sunt matricea sistemului și vectorul termenilor liberi

> rezlin:=proc(A,b)

local a,x,n,i,j,k,aux;

uses linalg;

n:=rowdim(A);

a:=matrix(n,n+1);

for i from 1 to n do

for j from 1 to n do a[i,j]:=A[i,j] end do;

a[i,n+1]:=b[i] end do;

for k from 1 to n do i:=k;aux:=abs(a[k,k]);

for j from k+1 to n do

if abs(a[j,k])>aux then aux:=abs(a[j,k]);i:=j end if end do;

if i>k then for j from k to n+1 do

Page 5: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Metode Numerice - Lucrarea de laborator 4

5

aux:=a[k,j];a[k,j]:=a[i,j];a[i,j]:=aux od end if;

if a[k,k]=0 then print(`matrice singulara`); return NULL end if;

for j from k+1 to n+1 do a[k,j]:=a[k,j]/a[k,k] end do;

a[k,k]:=1;

for i from k+1 to n do

for j from k+1 to n+1 do a[i,j]:=a[i,j]-a[k,j]*a[i,k] end do

end do;

for j from k+1 to n do a[j,k]:=0 end do

end do;

x:=vector(n);

x[n]:=a[n,n+1];

for i from n-1 by -1 to 1 do x[i]:=a[i,n+1];

for j from i+1 to n do x[i]:=x[i]-a[i,j]*x[j] end do end do;

return evalm(x)

end proc;

Utilizăm procedura se mai sus pentru rezolvarea sistemului

x1 + x2 + x3 = 3

x1 - x2 + 2x3 = 2

-x1 - x2 + 3x3 = 1

> a1:=matrix(3,3,[1,1,1,1,-1,2,-1,-1,3]);

> b1:=vector(3,[3,2,1]);

> rezlin(a1,b1);

> linalg[linsolve](a1, b1);

Comanda MAPLE linsolve(A,b) întoarce soluția sistemului Ax = b.

Considerăm următoarele comenzi MAPLE:

> a2 := matrix(2, 2, [1, 1, 1, 10000001/10000000]);

:= a1

1 1 1

1 -1 2

-1 -1 3

:= b1 [ ], ,3 2 1

[ ], ,1 1 1

[ ], ,1 1 1

Page 6: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Mădălina Roxana Buneci Metode Numerice –Laborator

6

1 1

2 100000011

10000000

:

a

> a3 := map(evalf, a2)

1. 1.3

1. 1.000000100:

a

> b2 := vector(2, [10234, 10234]);

2 10234 1 4: 023b

Soluția sistemului a2 x = b2 (și similar a sistemului a3 x = b2) este (10234,0).

> linalg[linsolve](a2,b2);

10234 0

> rezlin(a2,b2);

10234 0

> linalg[linsolve](a3,b2);

10200.00000 34.00000

> rezlin(a3,b2);

10234.00000 0.

> evalf(linalg[cond](a2));

74.00000040010

Deși matricele a2 și a3 sunt egale - diferența este dată doar de reprezentarea

coeficienților: simbolic (ca numere raționale) în cazul lui a2 și în virgulă mobilă în

cazul lui a3 – comenzile linalg[linsolve](a2,b1) și linalg[linsolve](a3,b2) întorc

rezultate diferite.

Soluția corectă a sistemului este cea obținută în varianta în care s-a lucrat simbolic:

x1 = 10234

x2 = 0

Rezultatul eronat furnizat de comenzile rezlin(a3,b2) și linsolve(a3,b2) se datorează

relei condiționări a matricei A. Se observă că factorul de condiționare este:

74.00000040010

Page 7: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Metode Numerice - Lucrarea de laborator 4

7

III.3 Metode iterative de rezolvare a sistemelor liniare: metoda Jacobi

III.3.1 Generalități

Metodele iterative constau în construcția unui șir (xk)k convergent către soluția

exactă a sistemului. Oprirea procesului iterativ are loc la un indice m determinat pe

parcursul calculului în funcție de precizia impusă astfel încât termenul xm să constituie

o aproximație satisfăcătoare a soluției căutate.

Se consideră sistemul liniar

(1) Ax = b, AMn,n(R) nesingulară

și desfacerea matricei A definită prin

A = N-P.

cu N o matrice inversabilă.

Fie x0 un vector arbitrar din Rn. Construim șirul (xk)k folosind relația de recurență:

(2) Nxk+1 = P xk + b, k 0.

Fie G = N-1P. Este cunoscut că șirul (xk)k converge la soluția exactă a sistemului

oricare ar fi x0 dacă și numai dacă (G) < 1 ((G) reprezintă raza spectrală a lui G, i.e.

maximum modulelor valorilor proprii ale lui G). Fie x soluția exactă a sistemului. Dacă

notăm eroarea lui xk față de x cu

ek = x – xk,

atunci ek+1 = G ek = Gke0, pentru orice k 0.

N se alege astfel încât sistemul (2) să se rezolve ușor – de exemplu diagonală

sau triunghiulară În cazul metodelor concrete descrise în continuare se consideră

desfacerea standard a matricei A = (ai,j)1i,jn definită prin:

A = L + D + R

unde

a1,1 0 0 …… 0 0

D = diag(a1,1,a2,2,…. an,n) = 0 a2,2 0 ……0 0

……………………..

0 0 0 ……0 an,n

Page 8: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Mădălina Roxana Buneci Metode Numerice –Laborator

8

0 0 0 …… 0 0

L = a2,1 0 0 …… 0 0

………………………..

an,1 an,2 an,3 …… an,n-1 0

0 a1,2 a1,3 …… a1,n-1 a1,n

R = 0 0 a2,3 …… a2,n-1 a2,n

………………………..

0 0 0 …… 0 0

III.3.2 Metoda Jacobi

Metoda Jacobi se caracterizează prin desfacerea

N = D, P = - (L+R)

Șirul (xk)k construit prin această metodă este:

i,i

n

ij1j

kjj,ii

1ki

a

xab

x

, i =1,2,…,n

Dacă G = N-1P, atunci coeficienții matricei G sunt:

0, i = j

gi,j = i,i

j,i

a

a , i j.

(G) min(1

G ,

G ).

Calculăm 1

G :

1G = max{

n

1i

j,ig ,1 jn}

Page 9: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Metode Numerice - Lucrarea de laborator 4

9

= max{

n

ji1i i,i

j,i

a

a, 1 jn}

Calculăm

G :

G = max{

n

1j

j,ig ,1 in}

= max{

n

ij1j i,i

j,i

a

a,1 in}.

Dacă 1

G < 1 sau

G <1, atunci (G) <1. Dar condiția

G <1 este echivalentă cu:

| ai,i | >

n

ji1i

j,ia

caz în care spunem că A este diagonal dominantă. Deci dacă ai,i 0 pentru orice i =

1,2,…, n, și dacă A este diagonal dominantă atunci șirul obținut prin metoda Jacobi

converge la soluția exactă a sistemului (1). Dacă ek este eroarea lui xk față de x:

ek = x – xk,

atunci ek+1 = G ek = Gke0, pentru orice k 0. În consecință pentru orice norme

compatibile

0k0k0kk eGeGeGe

Fie n1, = min(1

G ,

G ) și fie eps > 0 dat. Vom considera xk este o aproximație

satisfăcătoare pentru soluția exactă a sistemului dacă

(n1,)k < .

ceea ce este echivalent cu

k

1,

ln1

ln n

.

Șirul (xk)k construit prin metoda Jacobi este definit prin

Nxk+1 = P xk + b, k 0, x0 dat

xk+1 = N-1P xk + N-1 b, k 0,

xk+1 = G xk + N-1 b, k 0,

Deci pentru orice i, 1 i n,

Page 10: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Mădălina Roxana Buneci Metode Numerice –Laborator

10

k 1ix

=n

ki, j j

j 1

g x

+ i

i,i

b

a=

nk

i, j jj 1j i

g x

- i

i,i

b

a=

ni, j k

ji,ij 1

j i

ax

a

+ i

i,i

b

a.

În consecință, șirul (xk)k construit prin metoda Jacobi este:

x0 dat

k 1ix

= i,i

1

a(bi -

nk

i, j jj 1j i

a x

), i =1,2,…,n, k0.

Următoarea procedură Maple are drept parametri matricea sistemului, vectorul

termenilor liberi, aproximația inițială x0 a soluției, și eroarea epsilon. Procedura

întoarce aproximația xk (dată de metoda Jacobi) a soluției cu

k =

1nln

epsln

,1

.

> mjacobi:=proc(a,b,x0,epsilon)

local n,n1,ni,x1,x2,k,i,j,p,suma;

uses linalg;

n:=vectdim(x0);

ni:=0;

for i to n do

suma:=0;

for j to i-1 do

suma:=suma+abs(a[i,j]) end do;

for j from i+1 to n do

suma:=suma+abs(a[i,j]) end do;

if a[i,i]=0 then print(`Metoda nu se aplica`);

return NULL end if;

suma:=suma/abs(a[i,i]);

if ni<suma then ni:=suma end if;

end do;

n1:=0;

for j to n do

suma:=0;

for i to j-1 do suma:=suma+abs(a[i,j])/abs(a[i,i]) end do;

for i from j+1 to n do suma:=suma+abs(a[i,j])/abs(a[i,i]) end do;

if n1<suma then n1:=suma end if;

end do;

Page 11: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Metode Numerice - Lucrarea de laborator 4

11

if ni>n1 then ni:=n1 end if;

if ni>=1 then print (`Metoda nu se aplica`); return NULL end if;

k:=floor(ln(epsilon)/ln(ni))+1;

x1:=vector(n); x2:=vector(n);

for i to n do x1[i]:=x0[i] end do;

for p to k do

for i to n do

x2[i]:=b[i];

for j to i-1 do

x2[i]:=x2[i]-a[i,j]*x1[j] end do;

for j from i+1 to n do

x2[i]:=x2[i]-a[i,j]*x1[j] end do;

x2[i]:=x2[i]/a[i,i] end do;

for i to n do x1[i]:=x2[i] end do

end do;

return evalm(x2)

end proc;

Utilizăm această procedură pentru rezolvarea sistemului:

3 x1 + x2 + x3 = 4

x1 + 5x2 + x3 = -2

-x1 + x2 + 8x3 = 14

> a:=matrix(3,3,[3,1,1,1,5,1,-1,1,8]);

> b:=vector([4,-2,14]);

> linalg[linsolve](a,b);

> x0:=vector(3,[0,0,0.1]);

:= a

3 1 1

1 5 1

-1 1 8

:= b [ ], ,4 -2 14

[ ], ,1 -1 2

Page 12: Lucrarea de laborator nr. 4 · Lucrarea de laborator nr. 4 I. Scopul lucrării - Aplicații ale eliminării gaussiene cu pivotare parțială la rezolvarea sistemelor liniare compatibil

Mădălina Roxana Buneci Metode Numerice –Laborator

12

> mjacobi(a,b,x0,0.001);

> x1:=vector(3,[0,1,2345]);

> mjacobi (a,b,x1,10^(-3));

> map(evalf,mjacobi (a,b,x1,10^(-3)));

:= x0 [ ], ,0 0 0.1

[ ], ,1.000000094 -0.9999998188 1.999999921

:= x1 [ ], ,0 1 2345

, ,

1919531

1920000

-8001171

8000000

51199997

25600000

[ ], ,0.9997557292 -1.000146375 1.999999883