matlab_无约束的非线性优化

【模型】

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

你可能感兴趣的:(matlab)