Metoda Cramer

11
Sisteme de ecuaţii liniare Metoda Kramer

description

Metoda Cramer pentru rezolvarea sistemelor de ecuatii

Transcript of Metoda Cramer

Page 1: Metoda Cramer

Sisteme de ecuaţii liniare

Metoda Kramer

Page 2: Metoda Cramer

ExempluFie dat sistemul de ecuaţii liniare: 11 1 12 2 1 1

21 1 22 2 2 2

1 1 2 2

n n

n n

n n nn n n

a x a x a x b

a x a x a x b

a x a x a x b

Sistemul poate fi transcris în formă matriceală:

A x = b

nnnn

n

n

aaa

aaa

aaa

A

21

22221

11211

nb

b

b

b2

1

nx

x

x

x2

1

Page 3: Metoda Cramer

În cazul în care (A) 0 pentru matricea A există matricea inversă A-1. Atunci putem realiza următoarele transformări:

Ax bbAAxA 11

bAx 1

Page 4: Metoda Cramer

Conform regulilor de formare a matricei inverse:

1,1 2,1 ,1

1,2 2,2 ,21

1, 2, ,

...

...

...

...

n

n

n n n n

A A A

A A AA

A A A

1,1 2,1 ,11 1

1,2 2,2 ,22 2

1, 2, ,

...

...

...

...

n

n

n n n n

n n

A A Ax b

A A Ax b

A A Ax b

Sistemul x =A-1b

se descompune după componente:

A i,j este minorul cu semn al elementului ai,j

Page 5: Metoda Cramer

Vectorul soluţiei x este produsul matricelor din partea dreaptă a ultimei egalităţi. Prin urmare, componenta cu indicele i a vectorului soluţie x este suma produselor elementelor liniei i a matricei A-1 cu elementele vectorului b.

1, 1 2, 2 ,...i i n i ni

A b A b A bx

Numărătorul fracţiei din partea dreaptă a egalităţii este descompunerea unei matrice A+ după coloana cu indicele i. ((A+))

Matricea A+ se obţine din matricea A prin înlocuirea coloanei i a coeficienţilor sistemului prin vectorul termenilor liberi b.

Page 6: Metoda Cramer

Algoritmul general:

• Determinăm det(A). Dacă = 0, metoda nu poate fi aplicată - STOP. În caz contrar:

• Calculăm elementele soluţiei după formula

nix ii ,...,1

1,1 1, 1 1 1, 1 1,

2,1 2, 1 2 2, 1 2,

,1 , 1 , 1 ,

i i n

i i ni

n n i n n i n n

a a b a a

a a b a a

a a b a a

Page 7: Metoda Cramer

Structuri de date:

1. Un tablou bidimensional A[n,n] – pentru coeficienţii sistemului. Linia i a tabloului va conţine coeficienţii ecuaţiei cu indicele i

2. Tabloul unidimensional B[n] – pentru stocarea termenilor liberi ai sistemului. Elementul B[i] al tabloului va stoca termenul liber al ecuaţiei cu indicele i.

3. Tabloul unidimensional X[n] – pentru stocarea soluţiilor sistemului. Elementul X[i] al tabloului va stoca componenta xi a soluţiei .

Page 8: Metoda Cramer

Exemplu de program:

program kramer;

const nmax=10;

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

vec=array[1..nmax] of real;

var a : mat;

sol,b : vec;

p,n : integer;

de : real;

Page 9: Metoda Cramer

procedure citeste (var x:mat; var t:integer; var z:vec);

var i, j: integer; f: text;begin assign (f, 'sistem5.in'); reset(f); readln(f, t); for i:=1 to t do begin for j:=1 to t do read(f,x[i,j]); readln(f, z[j]); end; close(f);end;

Page 10: Metoda Cramer

function calcul( x:mat;t:integer):real;var i,j,k,l:integer; s: real; minor:mat;begin if t=1 then calcul:=x[1,1] 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]*calcul(minor, t-1) else s:=s-x[1,k]*calcul(minor, t-1); end; calcul:=s;end; end;

Page 11: Metoda Cramer

function trans( x:mat;t,l:integer):real;var i : integer;begin

for i:=1 to t do x[i,l]:=b[i]; trans:=calcul(x,t);end;

begin citeste(a,n,b); de:=calcul(a,n); if de<>0 then begin for p:=1 to n do sol[p]:= trans(a,n,p)/de; for p:=1 to n do writeln('x[',p,']=',sol[p]); end else writeln('Calcul imposibil');end.