Determinanti

Post on 24-May-2015

11.128 views 6 download

description

Algoritmi de calcul a determinan'ilor numerici

Transcript of Determinanti

Determinanţi

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

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

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

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

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

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

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;

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

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

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

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