Sunteți pe pagina 1din 5

LUCRAREA DE LABORATOR nr.

3
REZOLVAREA NUMERICA
A SISTEMELOR DE ECUATII LINIARE

Scopul lucrării: însușirea practică a metodelor numerice de rezolvarea a sistemelor de ecuații


liniare (SEL), calcularea determinatului si inversei matricei. Însușirea procedurilor MATLAB de
rezolvare SEL si prelucrare a matricelor

Considerații teoretice

Se consideră SEL

a11x1+ a12x2+ a13x3+…+ a1nxn=y1;


a21x1+ a22x2+ a23x3+…+ a2nxn=y2;
a31x1+ a22x2+ a33x3+…+ a3nxn=y3;
……………………………….
an1x1+ an2x2+ an3x3+…+ annxn=yn,

care poate fi scris matricial in forma

A·X=Y, unde
A este matricea pătrată de ordinul ”n” a coeficienților;
X este vectorul coloana al necunoscutelor (o matrice cu dimensiunea n x 1);
Y este vectorul coloana al coeficienților liberi (o matrice cu dimensiunea n x 1).

Proceduri MATLAB de Analiză Matricială

1. Determinatul matricei D=det(X)


2. Transpunere matricei T=A’
3. Inversa matricei Y=inv(X)
4. Factorizare LU [L,U]=lu (A)
5. Rezolvare SEL prin proceduri directe Matlab
5.1. folosind împărțirea la stânga a matricelor: din ecuația SEL AX=Y rezultă X=A\Y;
5.2. folosind inversa matricei X=inv(A)·Y;
5.3.folosind descompunerea LU se rezolva sistemele Z=L\Y si X=U\Z
6. Rezolvarea SEL prin metoda Gauss
solveGauss.m
function x = solveGauss(A,b)
%Codul de rezolvare a sistemelor de ecuații liniare prin Metoda Directă Gauss
s = length(A);
for j = 1:(s-1)
for i = s:-1:j+1
m = A(i,j)/A(j,j);
A(i,:) = A(i,:) - m·A(j,:);
b(i) = b(i) - m·b(j);
end
end
x = zeros(s,1);
x(s) = b(s)/A(s,s);
for i = s-1:-1:1
sum = 0;
for j = s:-1:i+1
sum = sum + A(i,j)·x(j);
end
x(i) = (b(i)- sum)/A(i,i);
end

end

7. Rezolvarea SEL/SEN prin metoda iterativă Gauss-Seidel


GaussSeidel.m
%% Gauss Seidel Method
%% Solution of x in Ax=b using Gauss Seidel Method
% · _·Initailize 'A' 'b' & intial guess 'x'·_
%%
A=[5 -2 3 0;-3 9 1 -2;2 -1 -7 1; 4 3 -5 7]
b=[-1 2 3 0.5]'
x=[0 0 0 0]'
n=size(x,1);
normVal=Inf;
%%
% · _·Tolerence for method·_
tol=1e-5; itr=0;
%% Algorithm: Gauss Seidel Method
%%
while normVal>tol
x_old=x;

for i=1:n

sigma=0;

for j=1:i-1
sigma=sigma+A(i,j)·x(j);
end

for j=i+1:n
sigma=sigma+A(i,j)·x_old(j);
end

x(i)=(1/A(i,i))·(b(i)-sigma);
end

itr=itr+1;
normVal=norm(x_old-x);
end
%%
fprintf('Solution of the system is : \n%f\n%f\n%f\n%f in %d
iterations',x,itr);

8. Rezolvarea SEL/SEN prin metoda iterativă Jacobi


Jacobi.m
%% Jacobi Method
%% Solution of x in Ax=b using Jacobi Method
% · _·Initailize 'A' 'b' & intial guess 'x'·_
%%
A=[5 -2 3 0;-3 9 1 -2;2 -1 -7 1; 4 3 -5 7]
b=[-1 2 3 0.5]'
x=[0 0 0 0]'
n=size(x,1);
normVal=Inf;
%%
% · _·Tolerence for method·_
tol=1e-5; itr=0;
%% Algorithm: Jacobi Method

while normVal>tol
xold=x;

for i=1:n
sigma=0;

for j=1:n

if j~=i
sigma=sigma+A(i,j)·x(j);
end

end

x(i)=(1/A(i,i))·(b(i)-sigma);
end

itr=itr+1;
normVal=abs(xold-x);
end
%%
fprintf('Solution of the system is : \n%f\n%f\n%f\n%f in %d
iterations',x,itr);

9. Analiza numerică a circuitelor electrice liniare în regim permanent


a. Se consideră un circuit electric de N noduri și L laturi. Pe fiecare latură k (unde k ia valori de la 1
la L), se consideră forma generală a Legii lui Ohom
𝑢 +𝐸
𝑢𝑘 = 𝑅𝑘 𝑖𝑘 − 𝐸𝑘 , se poate scrie și 𝑖𝑘 = 𝑘 𝑘 = 𝐺𝑘 𝑢𝑘 + 𝐽𝑘
𝑅𝑘
b. Notăm cu i = [i1, i2,… iL]T – vectorul curentilor pe laturi, u = [u1, u2,… uL]T– vectorul căderilor de
tensiune pe laturi, v = [v1, v2,… vN-1]T– vectorul potențialelor nodurilor, R = diag(R1, R2, …, RL) –
matricea diagonală a rezistențelor laturilor, E = [E1, E2, …, EL ] – vectorul t.e.m. pe laturi
c. Scriem forma matricială ale Teoremelor lui Kirchoff A·i=0, u=AT·v , unde A – matricea de
incidență (legătură) laturi noduri; elementele an,k au valoarea 0 când latura k nu are tangență cu
nodul n, au valoarea 1 când latura k părăsește nodul n, au valoarea -1 când latura k intră în nodul n.
d. Exemplu
Tk1:

𝐼1 −𝐼2 0 𝐼4 0 0 0
0 𝐼2 −𝐼3 0 𝐼5 0 =0
−𝐼1 0 𝐼3 0 0 𝐼6 0
Tk2:

−𝑅1 ∙ 𝐼1 0 0 −𝐸1 0 𝐸2 0
0 𝑅2 ∙ 𝐼2 0 −𝐸1 −𝑅5 ∙ 𝐼5 0 =0
0 0 𝑅3 ∙ 𝐼3 0 𝑅5 ∙ 𝐼5 𝐸2 0

Rezultă sistemul de ecuații

𝐼1 −𝐼2 0 𝐼4 0 0 0
0 𝐼2 −𝐼3 0 𝐼5 0 =0
−𝐼1 0 𝐼3 0 0 𝐼6 0
−𝑅1 ∙ 𝐼1 0 0 0 0 0 𝐸1 − 𝐸2
0 𝑅2 ∙ 𝐼2 0 0 −𝑅5 ∙ 𝐼5 0 = 𝐸1
0 0 𝑅3 ∙ 𝐼3 0 𝑅5 ∙ 𝐼5 0 −𝐸2

1 −1 0 1 0 0 𝐼1 0
0 1 −1 0 1 0 𝐼2 0
−1 0 1 0 0 1 𝐼3 0
X =
−𝑅1 0 0 0 0 0 𝐼4 𝐸1 − 𝐸2
0 𝑅2 0 0 −𝑅5 0 𝐼5 𝐸1
0 0 𝑅3 0 𝑅5 0 𝐼6 −𝐸2

A X I= B

I=inv(A)*B

SARCINA DE LUCRU: Pentru SEL prescris de profesor:


1. Calculați manual SEL prin metoda Gauss, determinantul prin metoda Gauss si inversa matricei prin
metoda Jordan;
2. Folosind procedurile MatLab de analiză matricială programați si calculați SEL prin împărțire la stânga,
inversa matricei si factorizarea LU; determinatul si inversa matricei

Continutul referatului:
1. Foaia de titlu
2. Scopul lucrarii
3. Sarcina de lucru (SEL);
4. Notiuni teoretice asupra metodelor numerice de rezolvare SEL;
5. Tabelele calcului manual SEL, det(A), A-1;
6. Listingul programului MatLab si rezultatele de la calculator pentru SEL, det(A), A-1;
7. Analiza rezultatelor obtinute manual si in MatlLab. Concluzie.
Inrebari pentru verificare cunostinte:
1. Forma generala SEL. Formularea problemei de rezolvare SEL
2. Conditia necesara si sufucuenta de existenta a solutiei SEL
3. Clase de metode numerice de rezolvare SEL
4. Etapele de rezolvare SEL prin metoda Gauss
5. Deosebirea metodei Jordan de metoda Gauss
6. Cum se calculeaza det(A) prin metoda Gauss
7. Cum se calculeaza A-1 prin metoda Jordan
8. Sensul metodelor aproximative de rezolvare SEL
9. Metoda Iacoby de de rezolvare SEL
10. Metoda Seidel de rezolvare SEL
11. Metoda suprarelaxarii de rezolvare SEL. Formula de calcul
12. Conditia de convergenta a metodelor iterative de rezolvare SEL
13. Prioritatile si neajunsurile metodelor directe de rezolvare SEL
14. Prioritatile si neajunsurile metodelor aproximative de rezolvare SEL

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