【模型】
min f(x)
s.t. x1≤x≤x2.
【fminbnd】
求定区间上单变量函数的最小值。
[x,fval,exitflag,output] = fminbnd(fun,x1,x2,options);
【fminunc】
求解单变量及多变量的最小值,fminunc函数是基于梯度的最小优化算法。
[x,fval,exitflag,output,grad,hessian]= fminunc(fun,x0,options);
[x,fval,exitflag,output,grad,hessian]= fminunc(problem);
【fminsearch】
用于求解多变量的极小值,fminsearch是基于Nelder算法而编写的。
[x,fval,exitflag,output] = fminsearch(fun,x0,options);
【说明】
- 三个函数可能只输出局部最优解
- 三个函数均只对变量为实数的问题进行优化
- fminunc要求目标函数必须连续
【实例】
function Example
x = linspace(-pi, pi);
y = abs(1./x);
plot(x, y, 'r')
grid on
x0 = 1;
x1 = -3; x2 = 1;
options = optimset('HessUpdate', 'bfgs');
[x,fval,exitflag] = fminbnd(@fun,x1,x2)
[x,fval,exitflag] = fminunc(@fun,x0, options)
[x,fval,exitflag] = fminsearch(@fun,x0)
end
function y = fun(x)
y = abs(1./x);
end