Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
FACULTATEA DE AUTOMATICA SI CALCULATOARE
DEPARTAMENTUL DE AUTOMATICA SI INFORMATICA APLICATA
FACTORIZAREA MATRICELOR.
REZOLVAREA SISTEMELOR DE ECUATII NELINIARE
Tema la disciplina Matematici asistate de calculator
Semestrul II
CUPRINS
Algoritmul mathematic
Algoritmul matematic - exemplificare
3. Codul sursa Matlab corespunzator
algoritmului
4. Implementarea algoritmului in Matlab exemplificare
5.Bibliografie: Kilyeni St.,
'Metode numerice. Algoritme, programe Turbo Pascal, aplicatii in
energetica', Editura Orizonturi Universitare,
Rezolvarea Sistemelor de ecuatii neliniare cu metoda Gauss Seidel
Un sistem de ecuatii neliniare de ordinal n se poate aduce intodeauna la forma:
unde functiile , , , . , depind de variabilele reale , , , . , ,fiind continue in domeniul de interes.Introducand notatiile matriceale:
Sistemul poate fi scris sub forma:
f(x)=0, ,
sau se poate utiliza una dintre formele intermediare:
i=1 ,n;
i=1 ,n;
A determina o solutie a sistemului inseamna a gasi un se de valori:
care satisfac relatiile
adica f()=0.
Altgoritmul mathematic
Daca au fost definite functiile de exprimare explicita ,i=1,2,,n atunci:
a)Se intializeaza x cu (indicele superior se refera la iteratie),cat mai aproape de solutia exacta:
b)La un pas oarecare k, k=1,2,3,,al procesului iterativ de calcul, noiile valori ale varaibilelor se determina cu relatiile:
= i=1 ,,n.
c)Calculul se considera terminat cand sunt intdeplinite conditiile 1 si 2.
1., i=1 ,n;
2., i=1,2,n;
sunt cel putin una dintre ele (dependent de natura aplicatiei).
Conditiile de convergenta:
, i=1 ,,n, j=1,2,,n.
Altgoritm mathematic exemplificare
Se considera un sistem de n-3 ecuatii neliniare de forma:
pentru care s-au separat o solutie in domeniul definit de urmatoarele intervale de variatie ale celor trei variabile [0;5], [0;5], [0;5].
Se admit erorile =0.001 -pentru valorile variabilelor si =0.01 -pentru valorile functiilor.
1.Exprimam varaibilele explicit:
Initializam solutiile cu valorile =5 =5 =5
Solutiile la care trebuie sa ajungem: =4 , =3,2911, =5,8894
Iteratia 0:
=5 =5 =5
Iteratia
Corectie maxima : =1,69
Iteratia 2:
Corectie maxima : =0,27
Iteratia 3:
Corectie maxima :=0,08
Iteratia 4:
Corectie maxima : =0,02
Iteratia 5:
Corectie maxima :=0,02
Iteratia 6:
Corectie maxima :=0,01
Iteratia 7:
Iteratia 8:
Iteratia 9:
Iteratia 10:
Iteratia 11:
Iteratia 12:
Corectie maxima : =0,0001 =0,0001 =0,0001
Altgoritumul Matlab
function gauss_seidel;
%Sa se gaseasca solutia cu coordonate pozitive a sistemului urmator:
% 2*x^2-x*y-5x=-1;
% x+3lg(x)-y^2=0;
%luand aproximatia initiala x0=3.5; y0=2.2
% eroarea este w=0.0001;
disp(sprintf('n'));
disp(sprintf('Metoda aproximatiilor succesive pentru rezolvarea sistemelor de ecuatii neliniare.Metoda Gauss-Seidel n'));
x0
y0=2.2;
eroareX=
eroareF=
disp('Sa se gaseasca solutia cu coordonate pozitive a sistemului urmator:');
disp(sprintf('2*x^2-x*y-5*x=-1'));
disp(sprintf('x+3lgx-y^2=0'));
disp(sprintf('luand aproximatia initiala x0=3.5, y0=2.2 .'));
disp(sprintf('Eroarea acceptata pt. variabile este de 0.0001.'));
disp(sprintf('Eroarea acceptate pt. functii este de 0.001.n'));
x1=tx(x0,y0);
y1=ty(x0,y0);
disp('Rezolvare:');
disp('Punem sistemul sub forma echivalenta:');
disp('x=sqrt((x*(y+5)-1)/2)');
disp('y=sqrt(x+3lgx)');
disp('Calculand aproximatiile succesive dupa formulele: ')
disp('x(k+1)=sqrt((x(k) * (y(k) + 5)-1)/2), y(k+1)=sqrt(x(k+1) + 3*lgx(k+1)), k=0,1,2,');
disp('Obtinem:');
disp(sprintf('Aproximatia initiala: x0=3.5 y0=2.2'));
disp(sprintf('Iteratia nr.1: x1=%f y1=%f dx=%f dy=%f f1=%f f2=%f',x1,y1,abs(x1-x0),abs(y1-y0),abs(f1(x1,y1)),abs(f2(x1,y1))));
i=1;
while (abs(x1-x0)>eroareX)||(abs(y1-y0)>eroareX)||(abs(f1(x1,y1))>eroareF)||(abs(f2(x1,y1))>eroareF)
i=i+1;
x0=x1;
y0=y1;
x1=tx(x1,y1);
y1=ty(x1,y1);
disp(sprintf('Iteratia nr.%d: x%d=%f y%d=%f dx=%f dy=%f f1=%f f2=%f',i,i,x1,i,y1,abs(x1-x0),abs(y1-y0),abs(f1(x1,y1)),abs(f2(x1,y1))));
end
tic
for j=1:10000
x0t=3.5;
y0t=2.2;
x1t=tx(x0t,y0t);
y1t=ty(x0t,y0t);
while (abs(x1t-x0t)>eroareX)||(abs(y1t-y0t)>eroareX)||(abs(f1(x1t,y1t))>eroareF)||(abs(f2(x1t,y1t))>eroareF)
x0t=x1t;
y0t=y1t;
x1t=tx(x1t,y1t);
y1t=ty(x1t,y1t);
end;
end
timp=toc;
disp(sprintf('n'));
disp(sprintf('Solutia aproximativa a sistemului este: x=%f y=%f',x1,y1));
disp(sprintf('Timpul necesar pentru a rezolva sistemul de 10000 de ori este: %f',timp));
disp(sprintf('Numarul necesar de iteratii este: %d',i));
1.Compararea metodelor din punct de vedere al timpului de executie,masurat in secunde.
Metoda numerica Gauss-Seidel |
Metoda numerica . |
Functia Matlab fsolve |
Functia Matlab . |
. |
||
Exemplu 1 |
0,5 |
0,12 | ||||
Exemplu 2 |
0,45 |
0,14 | ||||
Exemplu 3 |
0,40 |
0,10 | ||||
Exemplu 4 | ||||||
Exemplu 5 | ||||||
Timp de executie mediu |
0,45 |
0,12 |
2.Compararea metodelor din punct de vedere al precizie absolute/relative.
Metoda numerica Gauss-Seidel |
Metoda numerica . |
Functia Matlab fsolve |
Functia Matlab . |
. |
||
Exemplu 1 | ||||||
Exemplu 2 | ||||||
Exemplu 3 | ||||||
Exemplu 4 | ||||||
Exemplu 5 | ||||||
Precizia relativa medie |
3.Compararea metodelor din punct de vedere al numarul de iteratii effectuate.
Metoda numerica Gauss-Seidel |
Metoda numerica . |
Functia Matlab fsolve |
Functia Matlab |
. |
||
Exemplu 1 |
13 |
4 | ||||
Exemplu 2 |
12 |
2 | ||||
Exemplu 3 |
11 |
2 | ||||
Exemplu 4 | ||||||
Exemplu 5 | ||||||
Numarul mediu de iteratii |
12 |
3 |
Copyright © 2024 - Toate drepturile rezervate