Sunteți pe pagina 1din 3

Model de lucrarea de laborator Nr.

4
Tema: Rezolvarea sistemelor de ecuaţii algebrice liniare prin metoda
lui Gauss.

I. Formularea problemei.
Fie sistemul de ecuaţii algebrice liniare
AX=B (1)
Unde A=(aij), i,j=1,2,...,n este o matrice regulată de ordinul n (det A ≠ 0),
B=(b1,b2,...bn)- un vector cunoscut, iar X –vector necunoscut. Se cere de
rezolvat sistemul dat prin metode directe. În lucrarea dată soluţia sistemului se
poate determina şi după formula X=A-1B, calculîndu - se în prealabil A-1.
Metodele directe se caracterizează prin aceea că descrie algoritmi, care
permit să determinăm soluţia exactă în rezultatul efectuării unui număr finit de
operaţii.
Soluţia se căutată cu exactitatea dată ε (ε=10-3- 10-5), folosind în acest scop 2
metode.

II. Indicaţii metodice


Lucrarea de laborator constă în 2 etape:
1. Rezolvarea matematică a problemei formulate.
 x + y + z = 6,

Exemplu 1. Să se rezolve prin metoda lui Gauss sistemul:  x − 2 y + 3z = 6,
 x + 3 y − z = 5.

Rezolvare. Scriem matricea sistemului şi aplicăm metoda lui Gauss
1 1 1 6  × (− 1)× (− 2 )
 
A1 =  1 − 2 3 6  ← ↓ ⇔
 2 3 − 1 5 ← ←
 

1 1 1 6  1 1 1 6 
 
⇔ A2 =  0 − 3 2 ( )
0  × 1 ⇔ ⇔ A3
3

= 0 − 3 2

0 
 0 1 − 3 − 7  ←↓ 0 0 − 7 / 3 − 7
   
În urma calculelor am obţinut sistemul:
x + y + z = 6,  x = 1,
 
 − 3 y + 2 z = 0, ⇔  y = 2,
 − 7 / 3z = −7,  y = 3,
 

Răspuns: x = 1, y = 2, z = 3.

2. Alcătuirea unui program de calcul pentru metoda indicată şi pentru


exemplul dat.
Să se implementeze un program în limbajul de programare dorit (Pascal,
MatLab, C, C++, Java, etc.). Să se afişeze şi rezultate obţinute în urma
implementării programului.
1. Metoda Gauss;
Program Gauss;
type vector=array[1..25] of real;
matrix =array[1..25,1..25] of real;
const eps=1e-5;
var n,i,j,k,m,l:integer;
a:matrix;
det,t,s:real;
x:vector;

procedure pivot;
begin
l:=k;
for i:=k+1 to n do
if abs(a[i,k])>abs(a[l,k]) then l:=i;
begin
det:=-det;
for j:=k to n+1 do
begin
s:=a[k,j];
a[k,j]:=a[l,j];
a[l,j]:=s;
end;
end;
end;

begin
writeln('----------Metoda GAuss--------');
write('n=');read(n);

for i:=1 to n do
begin
for j:=1 to n do
begin
write('a[',i:2,',',j:2,']=');read(a[i,j]);

end;
writeln('b[',i:2,']=');read(a[i,n+1]);
end;
det:=1;
for k:=1 to n-1 do
begin
pivot;
t:=a[k,k];
for i:=k+1 to n do
begin
for j:=k+1 to n+1 do
a[i,j]:=a[i,j]-a[i,k]*a[k,j]/t;
if abs(a[i,j])<eps then a[i,j]:=0;

a[i,k]:=0;
end;
writeln('k=',k:2);
for i:=1 to n do
begin
for j:=1 to n+1 do
write(a[i,j]:10:4);
writeln;
end;
end;
x[n]:=a[n,n+1]/a[n,n];
det:=det*a[n,n];
for i:=n-1 downto 1 do
begin
s:=0;
for j:=i+1 to n do s:=s+a[i,j]*x[j];
x[i]:=(a[i,n+1]-s)/a[i,i];

det:= det*a[i,i];
end;
for i:=1 to n do
write('x[',i:2,']=',x[i]:10:4);
writeln('det. A=',det:10:4);
readln

end.

S-ar putea să vă placă și