MATLAB 5.3 (Release 11) MATLAB fmins fminsearch.
fminsearch:
x=fminsearch('fun',x0) 0 fun(). 0 , .
x=fminsearch('fun',x0,options) , options. options :
Display . Display:
'off' , 'iter' , 'final' , 'notify' ( ) .
options(1)=0 .
MaxFunEvals .
MaxIter .
TolX , .
[x,fval]=fminsearch('fun',x0,options) fval 'fun' x.
[x,fval,exitflag]=fminsearch('fun',x0,options) exitflag, fminsearch().
exitflag>0 'fun' x.
exitflag=0 , .
exitflag<0 , 'fun' .
[x,fval,exitflag,output]=fminsearch('fun',x0,options) output, :
output.algorithm ;
output.funcCount ;
output.iterations .
fminsearch - , myfun(), , 10-3 x, fval, exitflag :
[x,fval,exitflag,output]=fminsearch('myfun',[-3 0], optimset('Display','iter','TolX',1e-3));
x_min=x(1) %
y_min=x(2) %
f_min=fval %
exitflag %
n=output.funcCount %
1. MATLAB .
2. -̳ MATLAB.
3. , MATLAB fmins (fminsearch).
|
|
4. .
5. .
1. .
2. .
3.
4. - -̳.
5. -̳, fmins (fminsearch).
6. , fmins (fminsearch).
7. .
, | ||
[-300;300], [-15;25] | ||
[-8;8], [-6;6] | ||
[-10;10], [-10;20] | ||
[-10;10], [-10;10] | ||
[-10;10], [-10;10] | ||
[-3;3], [-3;0] | ||
[-4;0], [-3;3] | ||
[-100;100], [-10;10] | ||
[-4;8], [-100;100] | ||
[-70;70], [-10;10] | ||
[-20;10], [-10;20] | ||
[-10;10], [-50;50] | ||
[-300;300], [-10;10] | ||
[-15;10], [-10;10] |
˳
1. .. . .: , 1967.
2. .. MATLAB 5. . .: -
: . . -̳.
:
-̳ fmins (fminsearch) MATLAB.
:
1.
2. - -̳
-̳, fmins:
%lab4
clear,clc
%
[x,y]=meshgrid([-3:0.1:2],[-2:0.1:2]); z=l4f(x,y);
figure('name','Nelder-Mid','numbertitle','off','menubar','none', 'color','w');
h=surfc(x,y,z);set(h,'facecolor',[1 1 1],'edgecolor',[0 0 0])
xlabel('Parametr 1 (x)');ylabel('Parametr 2 (y)');zlabel('Kryteriy (f(x,y))');
hold on,
clear all
pause;
% -̳
disp(' -̳')
l=1; %
disp(''), eps=0.001
al=1; be=0.5; ga=2; s1=0.9659; s2=0.2588;
x(1)=-3; y(1)=0; z(1)=l4f(x(1),y(1));
x(2)=x(1)+l*s2; y(2)=y(1)+l*s1; z(2)=l4f(x(2),y(2));
x(3)=x(1)+l*s1; y(3)=y(1)+l*s2; z(3)=l4f(x(3),y(3)); n=3;
figure(1),plot3(x,y,[0 0 0],'ok','markerfacecolor','k','markersize',3)
pause
while sqrt(sum((z-sum(z)/3).^2))/3>eps
[zs,j]=sort(z);
xl=x(j(1)); yl=y(j(1)); zl=zs(1);
xg=x(j(2)); yg=y(j(2)); zg=zs(2);
xh=x(j(3)); yh=y(j(3)); zh=zs(3);
xo=(xl+xg)/2; yo=(yl+yg)/2;
xr=(1+al)*xo-al*xh; yr=(1+al)*yo-al*yh; zr=l4f(xr,yr); n=n+1;
figure(1),plot3(xr,yr,0,'ok','markerfacecolor','k','markersize',3)
if zr<zl
xe=(1-ga)*xo+ga*xr; ye=(1-ga)*yo+ga*yr; ze=l4f(xe,ye); n=n+1;
figure(1),plot3(xe,ye,0,'ok','markerfacecolor','k','markersize',3)
if ze<zl, xh=xe; yh=ye; zh=ze;
else xh=xr; yh=yr; zh=zr;
end
else
if zr>zg
if zr<zh, xh=xr; yh=yr; zh=zr;
|
|
end
xc=(1-be)*xo+be*xh; yc=(1-be)*yo+be*yh; zc=l4f(xc,yc); n=n+1;
figure(1),plot3(xc,yc,0,'ok','markerfacecolor','k','markersize',3)
if zc>zh
xg=(xg+xl)/2; yg=(yg+yl)/2; zg=l4f(xg,yg);
xh=(xh+xl)/2; yh=(yh+yl)/2; zh=l4f(xh,yh); n=n+2;
figure(1),plot3([xg xh],[yg yh],[0 0],'ok','markerfacecolor','k','markersize',3)
else
xh=xc; yh=yc; zh=zc;
end
else
xh=xr; yh=yr; zh=zr;
end
end
x=[xl xg xh]; y=[yl yg yh]; z=[zl zg zh];
pause
end
line([xl xl],[yl yl],[0 2],'color','k');
disp('̳ '), x=xl, y=yl, z=zl
disp('ʳ '), n
% fmins()
disp(' fmins()')
[x,options]=fmins('l4f1',[-3 0],[0 1 eps]);
x_min=x(1)
y_min=x(2)
z_min=l4f(x_min,y_min)
n=options(10)
ϳ -̳:
function z=l4f(x,y);
z=x.*3.*exp(-x.^2./1.5-y.^2)+2*pi/3;
ϳ fmins():
function z=l4f1(x);
z=x(1).*3.*exp(-x(1).^2./1.5-x(2).^2)+2*pi/3;
-̳ , fmins() MATLAB:
ʳ n | ||||
xmin | ymin | fmin | ||
-̳ | -0,8423 | -0,0396 | 0,5222 | |
fmins() | -0,8721 | 0,0007 | 0,5187 |
:
- -̳. ̳ -̳ ε=0,001 xmin=-0,8423 ymin=-0,0396 26 . ̳ , fmins, ε=0,001 xmin=-0,8721; ymin=0,0007 33 . -̳ fmins 0,5222-0,5187=0,0035, (0,5222-0,5187)/0,5187100%=0,6748%.