MATLAB 2014b fminunc 提供梯度

MATLAB 2014b fminunc provide gradient

如何在使用无约束最小化求解器时提供函数的梯度 fminunc 作为求解器在线文档中提供的以下选项 options = optimoptions('fminunc','Algorithm','trustregion','SpecifyObjectiveGradient',true); 在 MATLAB 2014b 中不可用。

您可以使用 GradObj 选项。例如,假设我们有函数 x1^2+x2^4:

function  [f,g]= goal(x)
    f= x(1)^2+x(2)^4;   % function
    if nargout>1    % gradient
        g= [2*x(1);4*x(2)^3];
    end
end

我们需要设置GradObj选项:

options=optimset('GradObj','on');

现在我们可以得到解决方案:

x= fminunc(@goal,x0,options) % x0 is the inital point