You are on page 1of 5

Model de lucrarea de laborator Nr.

6
Tema: Rezolvarea sistemelor de ecuaii algebrice liniare prin metoda
Jacobi

I. Formularea problemei.
Fie sistemul de ecuaii algebrice liniare
AX=B (1)
Unde A=(a
ij
), i,j=1,2,...,n este o matrice regulat de ordinul n (det A 0),
B=(b
1
,b
2
,...b
n
)- un vector cunoscut, iar X vector necunoscut. Se cere de
rezolvat sistemul dat prin metode directe. n lucrarea dat soluia sistemului se
poate determina i dup formula X=A
-1
B, calculndu - se n prealabil A
-1
.
Metodele directe se caracterizeaz prin aceea c descrie algoritmi, care
permit s determinm soluia exact n rezultatul efecturii unui numr finit de
operaii.
Soluia se cutat cu exactitatea dat (=10
-3
- 10
-5
), folosind n acest scop 2
metode.

II. Indicaii metodice
Lucrarea de laborator const n 2 etape:
1. Rezolvarea matematic a problemei formulate.
Se determin soluia sistemului dat prin metoda lui Jacobi:
Exemplu 1. S se rezolve sistemul urmtor de calcul prin metoda lui Jacobi:

= + +
= +
= + + +
= + +
. 17 5 2
, 21 5 5 19
, 15 3 5 4 20
, 1 2 10 3
4 3 2 1
4 3 2 1
4 3 2 1
4 3 2 1
x x x x
x x x x
x x x x
x x x x

Dac eroare de calcul este
3
10

= .
Rezolvare. Avem matricea sistemului
0 det ,
17
21
15
1
;
5 2 1 1
1 5 5 19
3 5 4 20
2 1 10 3

|
|
|
|
|

\
|
=
|
|
|
|
|

\
|

= A b A
Matricea A nu este stric diagonal-dominant, aa c transformm sistemul ntr-unul
echivalent: b x A = . Pentru ca matricea A s fie strict diagonal dominant, permutm primele
dou linii ntre ele, drept linie a treia lum diferena dintre linia a doua i linia a treia din
matricea A , iar a patra o lsm neschimbat.
Obinem
.
17
6
1
15
;
5 2 1 1
4 10 1 1
2 1 10 3
3 5 4 20
|
|
|
|
|

\
|

=
|
|
|
|
|

\
|

= b A
Am efectuat aceleai operaii i cu vectorul b .
Avem:
. 2 1 1 5 , 4 1 1 10
, 2 1 3 10 , 3 5 4 20
+ + > + + >
+ + > + + >

i deci matricea A este strict diagonal dominat.
Atunci sistemului b x A = putem s-i aplicm metoda lui Jacobi.
Scriem sistemul sub forma:

+ + =
+ =
+ + =
+ =
,
5
17
5
2
5
1
5
1
,
5
3
10
4
10
1
10
1
,
10
1
10
2
10
1
10
3
,
4
3
20
3
4
1
5
1
3 2 1 4
4 2 1 3
4 3 1 2
4 3 2 1
x x x x
x x x x
x x x x
x x x x
sau

+ + =
+ =
+ + =
+ =
. 4 , 3 4 , 0 2 , 0 2 , 0
, 6 , 0 4 , 0 1 , 0 1 , 0
, 1 , 0 2 , 0 1 , 0 3 , 0
, 75 , 0 15 , 0 25 , 0 2 , 0
3 2 1 4
4 2 1 3
4 3 1 2
4 3 2 1
x x x x
x x x x
x x x x
x x x x

Sistemul de mai sus conduce la irul lui Jacobi:
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )

+ + =
+ =
+ + =
+ =
+
+
+
+
. 4 , 3 4 , 0 2 , 0 2 , 0
, 6 , 0 4 , 0 1 , 0 1 , 0
, 1 , 0 2 , 0 1 , 0 3 , 0
, 75 , 0 15 , 0 25 , 0 2 , 0
3 2 1
1
4
4 2 1
1
3
4 3 1
1
2
4 3 2
1
1
k k k k
k k k k
k k k k
k k k k
x x x x
x x x x
x x x x
x x x x

Scriind acest ir sub forma general :
( ) ( )
c Bx x
k k
+ =
+1
, obinem :
|
|
|
|
|

\
|

=
|
|
|
|
|

\
|




=
4 , 3
6 , 0
1 , 0
75 , 0
;
0 4 , 0 2 , 0 2 , 0
4 , 0 0 1 , 0 1 , 0
2 , 0 1 , 0 0 3 , 0
15 , 0 25 , 0 2 , 0 0
c B
J
,
( ) 1 8 , 0 8 , 0 ; 6 , 0 ; 6 , 0 ; 6 , 0 max max
1
1
< = = = =

=

n
j
ij
n i
j
b B ceea ce conduce la : 4
2 , 0
8 , 0
1
= =

.
Condiia de oprire n acest caz este :
( ) ( ) ( ) ( ) 2 1
1
1
10 max 4 4

= < =
k
i
k
i
n i
k k
x x x x .
Putem lua
( )
( ) 0 , 0 , 0 , 0
0
= x i aflm soluiile aproximative la primul pas
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )

+ + =
+ =
+ + =
+ =
, 4 , 3 4 , 0 2 , 0 2 , 0
, 6 , 0 4 , 0 1 , 0 1 , 0
, 1 , 0 2 , 0 1 , 0 3 , 0
, 75 , 0 15 , 0 25 , 0 2 , 0
0
3
0
2
0
1
1
4
0
4
0
2
0
1
1
3
0
4
0
3
0
1
1
2
0
4
0
3
0
2
1
1
x x x x
x x x x
x x x x
x x x x

obinem
( )
( ) 4 , 3 ; 6 , 0 ; 1 , 0 ; 75 , 0
1
= x .
Verificm condiia de oprire (3.10):
( ) ( ) ( ) ( )
(
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
)
( )
( ) . 10 6 , 13 4 , 3 4 4 , 3 ; 6 , 0 ; 1 , 0 ; 75 , 0 max 4
0 4 , 3 ; 0 6 , 0 ; 0 1 , 0 ; 0 75 , 0 max 4
;
; ; max 4 max 4 4
2
1
1
0
4
1
4
0
3
1
3
0
2
1
2
0
1
1
1
1
1
1
1

= > = = =
= =
=
= =

n i
n i
n i
k
i
k
i
n i
k k
x x x x
x x x x x x x x
Continum calculele.
Am aflat pe
( )
( ) 4 , 3 ; 6 , 0 ; 1 , 0 ; 75 , 0
1
= x la primul pas, la pasul al doilea avem
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )

+ + =
+ =
+ + =
+ =
, 4 , 3 4 , 0 2 , 0 2 , 0
, 6 , 0 4 , 0 1 , 0 1 , 0
, 1 , 0 2 , 0 1 , 0 3 , 0
, 75 , 0 15 , 0 25 , 0 2 , 0
1
3
1
2
1
1
2
4
1
4
1
2
1
1
2
3
1
4
1
3
1
1
2
2
1
4
1
3
1
2
2
1
x x x x
x x x x
x x x x
x x x x

i obinem
( )
( ) 29 , 3 ; 025 , 2 ; 865 , 0 ; 37 , 0
2
= x
Verificm condiia de oprire:
( ) ( ) ( ) ( )
(
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
)
(
) ( )
. 10 7 , 5 425 , 1 4
11 , 0 ; 425 , 1 ; 965 , 0 ; 38 , 0 max 4 4 , 3 29 , 3
; 6 , 0 025 , 2 ; 1 , 0 865 , 0 ; 75 , 0 37 , 0 max 4
;
; ; max 4 max 4 4
2
1
1
1
4
2
4
1
3
2
3
1
2
2
2
1
1
2
1
1
1
1
1

= > = =
= =
+ =
=
= =

n i
n i
n i
k
i
k
i
n i
k k
x x x x
x x x x x x x x
Nu este verificat condiia de
oprire, se continu cu calculele.
Calculele de mai departe sunt prezentate n tabelul de mai jos.

k
1
x
2
x
3
x
4
x
( ) ( )

1
4
k k
x x
0 0 0 0 0 -
1 0,75 0,1 -0,6 3,4 13,6
2 0,37 -0,865 -2,025 3,29 5,7
3 0,93575 -0,8715 -2,0395 2,837 2,263
4 1,008625 -0,9575 -1,91552 2,94565 0,4959
5 0,977448 -0,98327 -1,97433 3,02593 0,32112
6 0,986347 -0,99585 -2,00644 3,00241 0,128452
7 1,000419 -0,99703 -1,99918 2,99386 0,056288
8 1,000122 -0,99882 -1,99729 2,99982 0,023816
9 0,999113 -0,99973 -1,99982 3,00087 0,0101124
10 0,999771 -0,99989 -2,00023 2,99984 0,0041271
ntruct:
( ) ( ) 2 9 10
10 01 , 0 0041272 , 0 4

= < = x x , aproximm soluia prin


( ) 10
x .
Deci: ; 999771 , 0
1
= x
; 999890 , 0
2
= x ; 000232 , 2
3
= x . 9998402 , 2
4
= x
Soluia exact este: ; 1
1
= x ; 1
2
= x . 3 ; 2
4 3
= = x x
Rspuns: ( ). 3 ; 2 , 1 ; 1

2. Alctuirea 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 afieze i rezultate obinute n urma
implementrii programului.
1. Metoda Jacobi;

program Jacobi;
type vector=array[1..25] of real;
matrix =array[1..25,1..25] of real;
const eps=1e-5;
var n,i,j,k:integer;
a,s:matrix;
s0,m,max:real;
b,b0,x,x0,t :vector ;

procedure maxim(a:vector; var max :real);
var i:integer;
begin
max:=a[1];
for i:=2 to n do
if max<a[i] then max:=a[i];
end;

begin
write(n=);read(n);
writeln(vector b);
for i:=1 to n do read(b[i]);
writeln(aproximatia initiala x0);
for i:=1 to n do read(x0[i]);
writeln(matricea A este:);
for i:=1 to n do
begin
s0:=0;
for j:=1 to n do
begin
write (a[,i:2,,,j:2,]=); read(a[i,j]);
if i<>j then s0:=s0+abs(a[i,j]);
end;
if(abs(a[i,i])<=s0) or (a[i,i]=0) then
writeln(matricea AS nu este diagonal dominanta);
end;
for i:=1 to n do
begin
t[i]:=b[i]/a[i,i];
s0:=0;
for j:=1 to n do
begin
s[i,j]:=-a[i,j]/a[i,i];
s0:=s0+abs(s[i,j]);
end;
s[i,i]:=0;
b[i]:=s0-1;
end;
maxim (b,m);
if m>=1then writeln(eraore)
else
writeln(....................metoda Jacobi.................);
writeln(norma beta a matricei sistemului sistemelui este ;,
m :10 :4) ;
write((beta/(1/beta)*max);
begin
m:=m/(1-m);
k:=0;
repeat
k:=k-1;
for i:=1 to n do
begin
s0:=0;
for j:=1 to n do s0:=s0+s[i,j]*x0[j];
x[i]:=t[i]+s0;
b[i]:=abs(x[i]-x0[i]);
end;
maxim(b,max);
write(k:3);
for i:=1 to n do
begin
write(x[i]:10:5);
x0[i]:=x[i];
end;
write(m*max:10:5); writeln;
until m*max<eps;
end;
write(solutia este:);
for i:=1 to n do writeln(x[i]:10:5);
readln

end.

You might also like