Professional Documents
Culture Documents
GrF x0,y0
GrF x0, y0 si se determina astfel incat () = F(x1, y1) -
F(x0, y0) sa atinga minimul. Cu m astfel calculat se calculeaza
x1
y1
x0
y0
m
GrF x0,y0
GrF x0, y0
- Se calculeaza in acelasi mod punctele
x2
y2
,
x3
y4
,
x4
y4
,.....
- Algoritmul se opreste atunci cand valoarea m devine mai mica decat toleranta .
O varianta de implementare a acestui algoritm este urmatoarea :
4 Laborat or 5 Mat he m at ica 0. nb
In[122]:= x0, y0 = 1, -1;
eps = 0.000001; m = eps + 1;
fx_, y_, _ = x, y -
NormGrFx, y
GrFx, y; vs = x0, y0, Fx0, y0;
Whilem > eps, x1, y1 = fx0, y0, ; _ = Fx1, y1 - Fx0, y0;
sm = NMinimize, > 0, ; m = . sm2; x1, y1 = fx0, y0, m;
Printx0, y0, m; vs = Appendvs, x1, y1, Fx1, y1; x0, y0 = x1, y1
Programul de mai sus a construit o lista vs cu coordonatele x, y, z=F(x,y) ale punctelor succesive calculate. Aceste puncte pot fi
asezate pe un grafic folosond comanda "ListPointPlot3D" si pot fi unite prin linii folosind comenzile "Graphics3D" si "Line" :
In[126]:= gp = ListPointPlot3Dvs, PlotStyle - PointSize0.03;
gl = Graphics3DGreen, Linevs;
Asezam pe aceeasi figura graficul functiei, punctele si liniile :
In[128]:= ShowgF, gp, gl, PlotRange - All
Un detaliu (zoom) al figurei anterioare :
In[129]:= ShowgF, gp, gl, PlotRange - -0.1, 0.1, -0.1, 0.1, All
Mathematica are la dispozitie comanda "FindMinimumPlot" care determina punctul de minim folosind o varianta mai sofisticata a
algoritmului anterior, numita metoda gradientului conjugat :
In[114]:= Needs"Optimization`UnconstrainedProblems`"
In[115]:= FindMinimumPlotFx, y, x, 1, y, -1, Method -> "ConjugateGradient"
Exercitiu : Incercati sa implementati in Matlab algoritmul de mai sus.
Laborat or 5 Mat he m at ica 0. nb 5