通常,找到函数的最小值是有用的,而不是调整它与x轴交叉的零。fminband
是为单变量函数的更简单但非常常见的情况而设计的,其中搜索区间是有界的。对于具有潜在多变量的函数的无界最小化,使用fminunc
或fminsearch
.这两个函数使用不同的内部算法,并且需要一些客观性函数的知识。对于可以区分的函数,fminunc
是适当的。对于具有不连续性的函数,或梯度搜索将失败的函数,使用fminsearch
详见优化用于在存在约束函数的情况下最小化。注意,可以通过简单地反转目标函数来搜索最大值(Fto_max=-Fto_min
).
x =
fminbnd (fcn, a, b)
¶x =
fminbnd (fcn, a, b, options)
¶[x, fval, info, output] =
fminbnd (…)
¶求一个单变量函数的极小点。
fcn是一个函数句柄、内联函数或字符串,包含要计算的函数的名称。
启动间隔从指定a(左边界)和b(右边界)。端点必须是有限的。
param是指定控制算法的附加参数的结构体。目前,fminband
识别这些参数:显示
, FunValCheck
, MaxFunEvals
,MaxIter
, OutputFcn
, TolX
.
MaxFunEvals
禁止在停止优化之前进行最大数量的函数评估。默认值为500。该值必须是正整数。
MaxIter
禁止在停止优化之前的最大算法迭代次数。默认值为500。该值必须是正整数。
TolX
指定解决方案的终止公差x。默认为1e-4
.
有关其他参数的描述,详见最优集
。使用的默认值初始化参数结构体fminband
使用options=optiset(“fminband”)
.
退出时,函数返回x,近似最小点,以及未来值,评估的函数x.
第三个输出信息返回算法是否成功,并可能采用以下值之一:
MaxIter
或MaxFunEvals
)超过。OutputFcn
.
注意:
fminunc
或fminsearch
.
fminband
内部使用黄金分割搜索策略。
fminbnd
和其他
优化函数,详见 优化函数 手册中的
一节.
详见: fzero, fminunc, fminsearch, optimset.
x =
fminunc (fcn, x0)
¶x =
fminunc (fcn, x0, options)
¶[x, fval] =
fminunc (fcn, …)
¶[x, fval, info] =
fminunc (fcn, …)
¶[x, fval, info, output] =
fminunc (fcn, …)
¶[x, fval, info, output, grad] =
fminunc (fcn, …)
¶[x, fval, info, output, grad, hess] =
fminunc (fcn, …)
¶求解从函数定义的无约束优化问题fcn.
fminunc
尝试确定向量x使得fcn(x)
是当地的最低要求。
fcn是一个函数句柄、内联函数或字符串,包含要计算的函数的名称。fcn应接受定义未知变量的向量(数组),并返回目标函数值(可选地带有梯度)。
x0决定了一个开始的猜测。的形状x0保留了对的所有调用fcn,但在其他方面被视为列向量。
param是指定控制算法的附加参数的结构体。目前,fminunc
识别这些参数:自动缩放
, FinDiffType
, FunValCheck
,GradObj
, MaxFunEvals
, MaxIter
,OutputFcn
, TolFun
, TolX
, TypicalX
.
如果自动缩放
是on
,变量将根据(估计的)雅可比矩阵的列范数进行自动缩放。因此TolFun
变得与缩放无关。默认情况下,此参数为关
因为它有时可能会返回意想不到的(尽管在数学上是正确的)结果。
如果GradObj
是on
,它指定fcn--当用两个输出参数调用时,也会在指定点返回部分一阶导数的雅可比矩阵。
MaxFunEvals
禁止在停止优化之前进行最大数量的函数评估。默认值为100*个变量
即。,100*长度(x0)
。该值必须是正整数。
MaxIter
禁止在停止优化之前的最大算法迭代次数。默认值为400。该值必须是正整数。
TolX
指定未知变量的终止公差x虽然TolFun
是对目标函数值的容差未来值。默认为1e-6
对于这两个参数。
有关其他参数的描述,详见最优集
.
在返回时,x是最小值的位置,并且未来值包含目标函数的值x.
信息可以是以下值之一:
聚合到解决方案点。相对梯度误差小于指定的TolFun
.
上次相对步长小于TolX
.
函数值的上次相对变化小于TolFun
.
超过迭代限制--算法迭代的最大次数MaxIter
或函数评估的最大数量MaxFunEvals
.
算法终止于OutputFcn
.
信任区域半径变得过小。
可选地,fminunc
可以返回具有收敛统计的结构体(输出),输出梯度(毕业生)在解决方案x,和近似的黑森(hess)在解决方案x.
注意:
fminband
通常是更好的选择。
fminunc
是一种依赖于目标函数可微的梯度搜索。如果函数具有不连续性,则最好使用无导数算法,例如fminsearch
.
fminunc
和其他
优化函数,详见 优化函数 手册中的
一节.
详见: fminband, fminsearch, optimset.
x =
fminsearch (fcn, x0)
¶x =
fminsearch (fcn, x0, options)
¶x =
fminsearch (problem)
¶[x, fval, exitflag, output] =
fminsearch (…)
¶查找的值x使多变量函数最小化fcn.
fcn是一个函数句柄、内联函数或字符串,包含要计算的函数的名称。
搜索从点开始x0并使用Nelder和Mead单纯形算法(一种无导数方法)进行迭代。该算法更适合于具有不连续性或基于梯度搜索的函数,例如fminunc
失败。
参数中提供了搜索参数param使用函数最优集
目前,fminsearch
接受以下参数:显示
, FunValCheck
,MaxFunEvals
,MaxIter
, OutputFcn
, TolFun
, TolX
.
MaxFunEvals
禁止在停止优化之前进行最大数量的函数评估。默认值为200*个变量
即。,200*长度(x0)
。该值必须是正整数。
MaxIter
禁止在停止优化之前的最大算法迭代次数。默认值为200*个变量
即。,200*长度(x0)
。该值必须是正整数。
有关其他参数的描述,详见最优集
。使用的默认值初始化参数结构体fminsearch
使用options=optiset(“fminsearch”)
.
fminsearch
也可以用具有以下字段的单个结构体参数调用:
objective
目标函数。
x0
起点。
solver
必须设置为fminsearch
.
options
从返回的结构体最优集
或者一个空矩阵来指示应该使用默认值。
该fieldoptions
是可选的。所有其他都是必需的。
退出时,函数返回x,最低点,以及未来值,函数值最小。
第三个输出exitflag返回算法是否成功,并可能采用以下值之一:
如果算法收敛(单纯形的大小小于TolX
以及迭代之间的步长函数值小于TolFun
).
如果超过了最大迭代次数或最大函数求值次数。
如果迭代被停止OutputFcn
.
第四个输出是一个结构体输出包含关于算法的运行时间。结构体中的字段为funcCount
包含对的函数调用次数fcn, iterations
包含迭代步骤的数量,算法
使用搜索算法的名称(始终:Nelder-Mead单纯形直接搜索
和message
带有退出消息。
用例
fminsearch(@(x)(x(1)-5)^2+(x(2)-8)^4, [0;0])
注意:
特定的优化操作需要传入额外
参数, F
, 即被优化的函数. 例如, F = F(x, C)
.
Octave的优化函数被设计仅能传入一个优化
变量到 F
, 传入更多的参数可以通过
一个 匿名函数 接收优化变量
来实现. 例如:
A = 2; B = 3; f = @(x) sin (A*x + B); fminbnd (f, 0, 2) ⇒ 0.8562
注意匿名函数将保持在定义函数时的优化变量。 在定义优化函数之后改变优化变量将不会 影响优化函数的输出,除非重新定义优化函数:
B = 4; fminbnd (f, 0, 2) ⇒ 0.8562 f = @(x) sin (A*x + B); fminbnd (f, 0, 2) ⇒ 0.3562
函数隆起
是一个有用的函数,用于测试零和xtrema查找函数。
y =
humps (x)
¶[x, y] =
humps (x)
¶评估具有多个最小值、最大值和过零点的函数。
输出y是对有理函数的评估:
1200*x^4 - 2880*x^3 + 2036*x^2 - 348*x- 88 y= - --------------------------------------------- 200*x^4 - 480*x^3 + 406*x^2 - 138*x+ 17
x可以是标量、向量或数组。如果x则使用默认范围[0:0.05:1]。
当用两个输出自变量调用时[x, y], x将包含输入值,以及y将包含的输出隆起
.
编程说明:隆起
具有两个位于附近的局部最大值x=0.300和0.893,附近的局部最小值x=0.637,附近为零x=-0.132和1.300。隆起
是测试寻找零或局部极小值和极大值的算法的有用函数。
尝试demo humps
查看的情节隆起
作用
详见: fzero, fminband, fminunc, fminsearch.
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-1