Determinanti

12
Determinanţi

description

Algoritmi de calcul a determinan'ilor numerici

Transcript of Determinanti

Page 1: Determinanti

Determinanţi

Page 2: Determinanti

Ce trebuie să cunoaştem:

Baze matematice (definiţii)

• Matrice

• Minor

• Determinant

Elemente de programare:

• Definirea şi prelucrarea tablourilor bidimensionale

• Utilizarea subprogramelor

• Recursia (tehnologie de programare)

© Sergiu Corlat, 2004

Page 3: Determinanti

Determinanţi ai matricelor de ordin 1, 2, 3

I. Matricea de ordinul 1:

A=(a1,1);

det(A)= a1,1

II. Matricea de ordinul 2:

det(A)=a11a22-a12a2111 12

21 22

a aA

a a

II. Matricea de ordinul 3:

11 12 13

21 22 23

31 32 33

a a a

A a a a

a a a

1,1 2,2 3,3 1,3 2,1 3,2 1,2 2,3 3,1 1,3 2,2 3,1 2,1 1,2 3,3 1,1 2,3 3,2det( ) .A a a a a a a a a a a a a a a a a a a

Page 4: Determinanti

Minorul elementului ai,j

minor de ordin n-1 (Ai,j) al elementului ai,j al matricei A de ordin n( n>1 ) - determinantul matricei de rang n-1,obţinută din matricea A prin excluderea liniei i şi a coloanei j.

1,2

1 3 70 2

0 0 2 ; det 2.1 1

1 2 1

A A

2,2

1 3 71 7

0 0 2 ; det 8.1 1

1 2 1

A A

1,1 1,2 1, 1,

2,1 2,2 2, 2,

,1 ,2 , ,

,1 ,2 , ,

... ...

... ...

...

... ...

...

... ...

j n

j n

i i i j i n

n n n j n n

a a a a

a a a a

a a a a

a a a a

Page 5: Determinanti

Determinant al matricei de ordin n

1,1 1,2 1,3 1,4

2,1 2,2 2,3 2,41,1 1,1 1,2 1,2 1,3 1,3 1,4 1,4

3,1 3,2 3,3 3,4

4,1 4,2 4,3 4,4

, det( ) .

a a a a

a a a aA A a A a A a A a A

a a a a

a a a a

determinant al matricei A de rang n - valoarea expresiei:

11 1,

1

( 1)n

jj j

j

a A

© Sergiu Corlat, 2004

Page 6: Determinanti

Algoritmizarea:

Definiţia determinantului satisface condiţiade consistenţă, deoarece:

Există un caz elementar (determinantul matricei de ordinul 1)

Determinantul matricei de ordinul n se calculează cu ajutorul determinantului pentru matricea de ordin n-1 n>1.

© Sergiu Corlat, 2004

Page 7: Determinanti

Algoritm (Matricea A de ordinul n)

Caz elementar: Dacă ordinul matricei A este 1, det(A)=a1,1, altfel:

Cazul de reducere: Determinantul matricei A se dezvoltă după linia 1. 0.

Pentru j de la 1 la n :Se formează matricea M1,j prin excluderea din matricea A a liniei 1 şi coloanei j. (Ordinul M1,j este n-1. Ea corespunde minorului A1,j)

Se calculează determinantul det (M1,j) prin apel recursiv la algoritmul curent.Se actualizează valoarea determinantului + (-1)1+jdet(M1,j) © Sergiu Corlat,

2004

Page 8: Determinanti

Implementareconst nmax=10;type mat=array[1..nmax,1..nmax] of real;

function det(var x:mat; t:integer) : real; var i, j, k, l : integer; s : real; minor : mat;begin if t=1 then det:=x[1,1] {caz elementar} else begin s:=0; for k:=1 to t do begin

for i:=1 to t-1 do for j:=1 to k-1 do minor[i,j]:=x[i+1,j]; for i:=1 to t-1 do for j:=k to t-1 do minor[i,j]:=x[i+1,j+1];

if odd(k)then s:=s+x[1,k]*det(minor, t-1) else s:=s-x[1,k]*det(minor, t-1); end; det:=s; end; end;

Page 9: Determinanti

Metode alternative

Pentru calculul determinanţilor pot fi folosite următoarele proprietăţi ale matricelor numerice:

1: Dacă de o parte a diagonalei principale a matricei A pentru care se calculează determinantul sunt numai zerouri, atunci

2: La schimbarea cu locul a două linii (coloane) ale matricei, semnul determinantului trece în opus.

3: La adăugarea la o linie a matricei a altei linii înmulţite cu un număr, valoarea determinantului nu se schimbă.

,1

det( )n

i ii

A a

Page 10: Determinanti

Cod alternativFunction calcul(x:mat;t:integer):real;var i,j,k,l : integer; r : real;begin for i:=1 to t-1 do begin if x[i,i]=0 then begin k:=i; for j:=i+1 to n do if x[j,i]<>0 then k:=j; if k=i then begin calcul:=0; exit;

end else for j:=1 to n do begin r:=x[i,j];

x[i,j]:=x[k,j]; x[k,j]:=-r; end; end;

for j:=i+1 to t do begin r:=-x[j,i]/x[i,i]; for k:=i to t do x[j,k]:=x[j,k]+x[i,k]*r; end; end; r:=1; for i:=1 to t do r:=r*x[i,i]; calcul:=r;end;

© Sergiu Corlat, 2004

Page 11: Determinanti

Analiza rezultatelor

27 21 21 15 22 27

14 6 1 2 9 1

27 19 1 24 2 25

3 14 15 24 18 0

11 10 18 17 9 12

5 8 12 9 9 8

Recursiv: 1.2209880000E+06

Iterativ: 1.2209879999E+06

0.217 0.21 0.21 0.15 0.22

0.1 0.166 0.1 0.2 0.9

0.2 0.19 0.178 0.24 0.2

0.3 0.14 0.15 -2.14 0.18

0.11 0.10 0.18 0.17 0.89

0.8 0.12 0.9 0.9 58.0

Recursiv: 9.0436875277E-04

Iterativ: 9.0436875280E-04

© Sergiu Corlat, 2004

Page 12: Determinanti

Bibliografie:1. Б.П. Демидович, И.А. Марон, Основы вычислительной

математики, Москва, издательство Физ-Мат литературы, 1963

2. A. Gremalschi. Informatica. Manual pentru clasa XI, Chişinău, Ştiinţa, 2003

3. T. A. Beu Calcul numeric în C, Cluj-Napoca, Editura albastră, 2000

4. G. D. Mateescu, Analiza numerică, proiect de manual pentru clasa a XII. Bucureşti, Editura Petrion, 1995

5. S. Corlat, L.Ivanov. Calcul numeric. Curs de lecţii la Informatică. Clasa XII. Chişinău, CCRE “Presa”, 2004.

6. R. Bradley New understanding Computer Science, London, Nelson Thornes, 2001