Sunteți pe pagina 1din 8

CURSUL 4.

REZOLVAREA SISTEMELOR LINIARE


SI NELINIARE PRIN METODE ITERATIVE
Metodele iterative permit, n principiu, gsirea soluiei unui sistem de ecuaii
liniare, pornind de la o aproximaie iniiala a soluiei, pe baza unui proces iterativ.
Dac sistemul este bine condiionat numeric (matricea lui satisface anumite
condiii), procedeul iterativ converge ctre soluia exact a sistemului. Practic,
procesul este ntrerupt dup un numr finit de pai, furniznd soluia sistemului cu
o anumit precizie.
Fie sistemul de ecuaii liniare: AX=B

cu

A=[aij]nn,

B=[bi]n

X=[xi]n.

Presupunnd c elementele diagonale ale matricei A sunt nenule, rezolvnd prima


ecuaie a sistemului n raport cu x1, cea de-a doua n raport cu x2, etc. i notnd
S=[sij]nn, T=[ti]n, putem scrie sistemul sub forma: X=T+SX unde:

s = 0, i = 1,2,..., n
ii

aij
, j = 1,2,..., n, j i
sij =
aii

b
ti = i

aii

Acest sistem se poate rezolva prin metoda aproximaiilor succesive considernd


aproximaia de ordin zero X(0)=T i construind aproximaia de ordin k pe baza
aproximaiei de ordin (k-1), utiliznd formula de recuren X(k)=T+SX(k-1),
k=1,2,(metoda Jacobi)
Ideea de baz a metodei Gauss Seidel const n utilizarea n calculul
componentei xi(k) a aproximaiei soluiei sistemului de la pasul k a componentelor
x1(k), x2(k), , xi-1(k), deja calculate, n locul componentelor x1(k-1), x2(k-1), , xi-1(k-1)
de la iteraia anterioar.

Introducnd coreciile absolute ale componentelor soluiei i(k)=xi(k)-xi(k-1),


i=1,2,n i redefinind elementele diagonale ale matricei S ca fiind sii=-1,
i=1,2,n putem scrie relaiile procesului iterativ explicit astfel;
x ( 0) = t , i = 1,2,...n
i
i

i 1
n
(k )
(k )
( k 1)
, k = 1,2,...
i = t i + sij x j + sij x j

j =1
j=i
(k )
( k 1)
+ (ik )
xi = xi

Procedeul iterativ descris de aceste relaii poate fi continuat pn cnd eroarea


absolut maxim devine mai mic dect o eroare maxim admisibil prescris, ,
adic
max (ik )
i

n cazul n care x i( k ) 0 , n locul erorii absolute se poate utiliza eroarea relativ,


(k )

care conduce la un criteriu mai util n practic: max


i

(k )

xi

Metoda Gauss-Seidel

a=[9 1 -1 0;1 9 0 -1;-1 0 9 1;0 -1 1 9];


b=[18 19 8 9];
//Generarea elementelor matricei S i a vectorului T
n=length(b);
for i=1:n
d=-1/a(i,i);t(i)=b(i)/a(i,i);
for j=1:n
a(i,j)=a(i,j)*d;
end
end
//Iniializarea soluiei
for i=1:n
b(i)=t(i);
end
k=0;er=1;
while (er>10^(-6))|(k<=1000)//testeaz convergenta (sau max 1000
iteraii)
k=k+1;

er=0;
for i=1:n
d=t(i);
for j=1:n
d=d+a(i,j)*b(j);
end
b(i)=b(i)+d;//noua aproximare a soluiei
if b(i)~=0
d=d/b(i);//eroare relativ
end
if abs(d)>er
er=abs(d);//calculul maximului erorii
end
end
end
b
Exerciii:
1. S se rezolve urmtoarele sisteme liniare de ecuaii, s se compare rezultatul cu
cel obinut n Scilab:
a)

9 x1 + x2 x3 = 18

x1 + 9 x2 x4 = 19

x1 + 9 x3 + x4 = 8
x2 + x3 + 9 x4 = 9

b)

x1 + 2 x 2 + 3 x 3 + 4 x 4

2 x 1 + 3 x 2 + 4 x 3 + x 4

3 x 1 + 4 x 2 + 2 x 3 + x 4
4 x 1 + x 2 + 2 x 3 + 3 x 4

= 11
= 12

(Atentie!! Ce trebuie s

= 13
= 14

facem ca s putem rezolva sistemul de la punctul b?)


2.

S se calculeze factorul Cholesky al matricei:

1 1 0
9

9
0 1 ;
1
A=
1 0
9
1

0 1 1
9

factorizarea Cholesky const n descompunera matricei ntr-un produs de forma


A=RtR; (R=chol(A)) apoi s se rezolve sistemul de la ex.1 punctul a.
3.

S se factorizeze LU (lower upper) matricea:

1 1 0
9

9
0 1 ;
1
A=
1 0
9
1

0 1 1
9

prin

factorizare LU, o matrice ptrat este descompus sub forma produsului a dou
matrice triunghiulare, una inferior triunghiular, cu elemente 1 pe diagonala
principal i cealalt superior triunghiular ([L,U]=lu(A)) apoi s se rezolve
sistemul de la ex.1 punctul a.

Sisteme neliniare
Metoda Newton

Fie sistemul
f ( x, y ) = 0

g( x, y ) = 0

(1)

x 2 + xy + y 2 + x + sin( x ) 4 = 0
2
2 x + y 3 3,5 = 0

(2)

sau concret

O metod de rezolvare const n dezvoltarea Taylor n jurul unui punct P0(x0,y0) i


neglijarea termenilor foarte mici, adic O(||P-P0||). Fie P(x,y) punctul curent.
Avem:
f ( x 0 , y0 )
f ( x 0 , y0 )

( x x0 ) +
( y y0 ) + O (|| P P0 ||) = 0
f ( x0 , y 0 ) +
x
y

g( x , y ) + g ( x0 , y0 ) ( x x ) + g ( x0 , y0 ) ( y y ) + O (|| P P ||) = 0
0 0
0
0
0

x
y

Prin neglijarea termenilor O(|| P P0 ||) rezult sistemul:


A11 x + A12 y = B1

A21 x + A22 y = B2

(3)

unde
A11 =

f ( x 0 , y0 )
f ( x 0 , y0 )
, A12 =
y
x

A21 =

g ( x 0 , y0 )
g ( x0 , y0 )
, A22 =
x
y

(4)

B1 = f ( x0 , y0 ) + A11 x0 + A12 y0
B2 = g ( x0 , y0 ) + A21 x0 + A22 y0

Soluia (x1,y1) a sistemului (3) nu este i a sistemului (1) dar putem repeta
procedeul i cu (x1,y1) s construim un nou sistem (3) a crui soluie este (x2,y2)
etc. Urmtoarea teorem ne spune ce se ntmpl:

Teorem. Dac f i g sunt de clas C2, dac exist o soluie a sistemului (1) fie ea
(x,y) i dac determinantul sistemului (3) este diferit de zero cnd (x0,y0) este
nlocuit cu (x,y), atunci exist o vecintate U a lui (x,y) astfel nct pentru orice
(x0,y0) din U irul (x1,y1), (x2,y2) ... construit mai sus este convergent la (x,y).
Observaii:
a) Teorema este valabil i n condiii mai generale
b) Pentru un sistem f i ( x1 , x2 ,... xn ) = 0, i=1,2,..,n sistemul (3) devine
n

Aij x j = Bi , i = 1,2,...n
j =1

cu coeficienii
Aij =

n
f i ( P0 )
Bi = f i ( P0 ) + Aij x 0j
xj
j =1

P0 este punctul de start P0(x10, x20,...xn0).


Pentru rezolvarea numeric a unui sistem (1) putem proceda astfel:
1. Definim funciile f i g
2. Lum o mrime eps prin care vom aprecia convergena, o mrime h
pentru calculul aproximativ al derivatelor; de exemplu eps=0,0001 h=0,001
3. Alegem (x0,y0) n principiu arbitrar
4. Calculm coeficienii sistemului (3) dup formulele (4). Derivatele le
calculm aproximativ, A11 =

f ( x 0 + h, y 0 ) f ( x 0 , y 0 )
, etc.
h

5. Rezolvm sistemul i obinem (x1,y1);


6. Testm dac |x1-x0|<eps i |y1-y0|<eps. Dac DA atunci scriem (x1,y1)
ALTFEL x 0 x1 y 0 y1 i se reiau calculele de la 4).

Exerciii

1. S se programeze algoritmul de mai sus pentru sistemul (2).


2. Fie sistemul

x 2 + axy + y 2 + x + sin( x ) 4a = 0
2
3
2 x + ay 3,5 = 0

S se rezolve sistemul pentru a=1; 1,1; 1,2; ... 2 folosind ca punct de start
(1,1); s se reprezinte grafic x(a) i y(a).
3. S se programeze rezolvarea unui sistem neliniar de n ecuaii cu n
necunoscute dup un algoritm asemntor cu cel prezentat pentru 2 ecuaii
Rezolvare n Scilab a ex 1
function u=f(x,y)
u=x^2+x*y+y^2+x+sin(x)-4;
endfunction
function v=g(x,y)
v=2*x^2+y^3-3.5;
endfunction
function [x,y]=SisNelin(x,y)
eps=0.000001;
h=0.001;
er=eps+1;
while (er>eps)
a(1,1)=(f(x+h,y)-f(x,y))/h;
a(1,2)=(f(x,y+h)-f(x,y))/h;
a(2,1)=(g(x+h,y)-g(x,y))/h;
a(2,2)=(g(x,y+h)-g(x,y))/h;
b(1)=-f(x,y)+a(1,1)*x+a(1,2)*y;
b(2)=-g(x,y)+a(2,1)*x+a(2,2)*y;
xn=a^(-1)*b;
er=norm(xn-[x;y]);
x=xn(1);y=xn(2);
end
endfunction
x=1;y=1;
[u,v]=SisNelin(x,y)
Se obtin valorile:
x = 0.4905521
y = 1.4452428
Rezolvare n Scilab a ex 3
function y=f(x)
y=zeros(2,1);
y(1)=x(1)^2+x(1)*x(2)+x(2)^2+x(1)+sin(x(1))-4;
y(2)=2*x(1)^2+x(2)^3-3.5;
endfunction
function x=SisNewton(n,x,h,eps)

er=eps+1;
a=zeros(n,n);
b=zeros(n,1);
while er>=eps
v=f(x);
for j=1:n
x(j)=x(j)+h;
a(:,j)=(f(x)-v)/h;
x(j)=x(j)-h;
end
b=-f(x)+a*x;
xn=inv(a)*b;
er=norm(xn-x);
x=xn;
end
endfunction
SisNewton(2,[1;1],0.001,0.0001)
ans =! 0.4905521 !
! 1.4452428 !
Rezolvarea cu funcia fsolve a SCILAB-ului:
function y=f(x)
y=zeros(2,1);
y(1)=x(1)^2+x(1)*x(2)+x(2)^2+x(1)+sin(x(1))-4;
y(2)=2*x(1)^2+x(2)^3-3.5;
endfunction
[s]=fsolve([1;1],f,0.0001)

Se obtine rezultatul:
s =! 0.4905521 !
! 1.4452428 !

Observatii:
1. Pentru a rezolva un sistem de ecuatii linear scriem matricea sistemului, A,
vectorul termenilor liberi, b, si obtinem solutia dup cum urmeaz:

dac determinantul matricei A este diferit de zero soluia o obinem scriind


X=A-1B.

dac matricei A este simetric i pozitiv definit se poate folosi


descompunerea Cholesky

dac matricei A se poate scrie ca produsul a dou matrice, una inferior


triunghiular i una superior triunghiular se poate folosi descompunerea
lower upper

2. dac matricei A este singular sau foarte aproape de aceast stare, sau, daca
sistemul este nelinear se poate folosi funcia fsolve
Bibliografie:
1. Pltineanu G., Matei P., Trandafir R., - Analiz numeric, Ed. Conspress,
Bucureti, 1998.2.
2. Camelia Gavril, Scilab. Aplicatii. Modelare si simulare. Scicos, 2007, Ed.
MATRIX ROM.
3. Camelia Gavrila, Metode Numerice rezolvate in MathCad si Matlab/Scilab,
2004, ISBN 973 685 852 9, Ed. MATRIX ROM.

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