Top Banner
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
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

Jan 18, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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