求无约束多变量函数的最小值

您所在的位置:网站首页 matlab求极值fmin 求无约束多变量函数的最小值

求无约束多变量函数的最小值

2024-07-13 13:43| 来源: 网络整理| 查看: 265

要计算最小值的函数,指定为函数句柄或函数名称。fun 函数接受向量或数组 x,并返回实数标量 f,即在 x 处计算的目标函数值。

fminunc 以 x0 参量的形状将 x 传递给目标函数。例如,如果 x0 是 5×3 数组,则 fminunc 将 x 以 5×3 数组的形式传递给 fun。

将 fun 指定为文件的函数句柄:

x = fminunc(@myfun,x0)

其中 myfun 是一个 MATLAB® 函数,例如

function f = myfun(x) f = ... % Compute function value at x

您还可以为匿名函数指定 fun 作为函数句柄:

x = fminunc(@(x)norm(x)^2,x0);

如果您可以计算 fun 的梯度且 SpecifyObjectiveGradient 选项设置为 true,设置如下

options = optimoptions('fminunc','SpecifyObjectiveGradient',true)则 fun 必须在第二个输出参量中返回梯度向量 g(x)。

如果您还可以计算黑塞矩阵,并通过 options = optimoptions('fminunc','HessianFcn','objective') 将 HessianFcn 选项设置为 'objective',且将 Algorithm 选项设置为 'trust-region',则 fun 必须在第三个输出参量中返回黑塞值 H(x),即一个对称矩阵。fun 可以给出稀疏黑塞矩阵。有关详细信息,请参阅适用于 fminunc 信赖域或 fmincon 信赖域反射算法的黑塞函数。

trust-region 算法允许您提供黑塞矩阵乘法函数。此函数给出黑塞乘以向量的乘积结果,而不直接计算黑塞矩阵。这可以节省内存。请参阅黑塞矩阵乘法函数。

示例: fun = @(x)sin(x(1))*cos(x(2))

数据类型: char | function_handle | string



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3