Documente Academic
Documente Profesional
Documente Cultură
cu
A=[aij]nn,
B=[bi]n
X=[xi]n.
s = 0, i = 1,2,..., n
ii
aij
, j = 1,2,..., n, j i
sij =
aii
b
ti = i
aii
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
(k )
xi
Metoda Gauss-Seidel
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
1 1 0
9
9
0 1 ;
1
A=
1 0
9
1
0 1 1
9
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
( 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
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
f ( x 0 + h, y 0 ) f ( x 0 , y 0 )
, etc.
h
Exerciii
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:
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.