📄 goldmin.m
字号:
function [x,fx,ea,iter]=goldmin(f,xl,xu,es,maxit,varargin)
if nargin<3,error('at least 3 input arguments required'),end
if nargin<4||isempty(es), es=0.0001;end
if nargin<5||isempty(maxit), maxit=50;end
phi=(1+sqrt(5))/2;
iter=0;
while(1)
d = (phi-1)*(xu -xl);
x1 = xl + d;
x2 = xu - d;
if f(x1,varargin{:}) < f(x2,varargin{:})
xopt = x1;
xl = x2;
else
xopt = x2;
xu = x1;
end
iter=iter+1;
if xopt~=0, ea = (2 -phi) * abs((xu -xl) / xopt) * 100;end
if ea <= es || iter >= maxit,break,end
disp(' [d] [x1] [x2]');
disp(sprintf(' %d %d %d\n',d,x1,x2))
end
x=xopt;fx=f(xopt,varargin{:});
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -