Documente Academic
Documente Profesional
Documente Cultură
LL1 Mereuta Ana TI-192
LL1 Mereuta Ana TI-192
RAPORT
Lucrarea de laborator Nr.1
la disciplina Metode și Modele de Calcul 2
Tema:Optimizarea necondiționata
Varianta 13
Chişinău 2020
Tema: Optimizarea unei funcții neliniare după metoda gradientului cu fracționarea pasului
PARTEA TEORETICĂ
2. Puncte de minim (maxim) local – Punctul x* ∈ R se numeste punct de minim (maxim) local,
daca exista o vecinatate N a punctului x*, in care orice punct care apatine acestei vecinatati
este mai mare (mai mic) decat x*.
Primul pas : Se allege arbitrar un x0 ∈ R, se alege un ε > 0 si se pune contor pentru iteratii k = 0.
Al doilea pas : Se calculeaza ∇ f(xk) si se determina apoi || f(xk) ||2 – magnitudinea
Daca || f(xk) ||2 < ε => STOP => x* = xk
Daca || f(xk) ||2 > ε => Pasul 3
Al treilea pas : Se aplica Procedura de sectionare a pasului.
Al patrulea pas : xk +1 = z, Se trece la pasul 2.
Graficul functiei :
Listingul programului:
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
//a = 3, b = 3;
using namespace std;
class optim{
public:
float f(float x, float y);
void data_input(void);
void gradient(void);
void metoda_gradientului(void);
private:
float a,b,ALFA,GAMA,DELTA,EPS,X[2],Z[2],G[2];
};
void optim::data_input(void){
cout<<"Introdu parametrul a: ", cin>>a;
cout<<"Introdu parametrul b: ", cin>>b;
}
//x[0]-x; x[1]-y
void optim::gradient(void){
G[0]=2*a*X[0]+3*X[1]-a;
G[1]=3*X[0]+2*b*X[1]-b;
}
void optim::metoda_gradientului(void){
int N=0;
float temp;
ALFA=0.1;
GAMA=0.1;
DELTA=0.1;
X[0]=1;
X[1]=1;
EPS=0.00001;
gradient();
X[0]=X[0]-ALFA*G[0];
X[1]=X[1]-ALFA*G[1];
gradient();
}
cout<<"\nMetoda gradientului:";
cout<<"\nPunctul are urmatoarele coordonate (x,y): "<<X[0]<<" "<<X[1]<<endl;
cout<<"Valoarea functiei f(x)="<<f(X[0],X[1])<<endl;
cout<<"Numarul de iteratii N="<<N<<endl;
}
int main(void){
system("CLS");
optim p1;
p1.data_input();
p1.gradient();
p1.metoda_gradientului();
getch();
return 0;
}
Rezultatul:
Concluzie:
În această lucrare de laborator, am avut de analizat optimizarea necondiționată a funcțiilor.
Deci, conform variantei mele, am minimizat funcția cu ajutorul metodei gradientului și a metodei de
direcție conjugată. În concluzie, pot spune că metoda gradientului, din punct de vedere a fracționării
pasului este mai inutilă dacă dăm o funcție mai mare.