文档

fminbnd

求固定区间上单变量函数的最小值

fminbnd是为指定的问题找到最小值的一维最小化器吗

最小值 x f x 这样 x 1 < x < x 2

xx1,x2是有限标量吗fx)是一个返回标量的函数。

语法

X = fminbnd(fun,x1,x2)
X = fminbnd(fun,x1,x2,options)
X = fminbnd(问题)
[x,fval] = fminbnd(___
[x,fval,exitflag] = fminbnd(___
[x,fval,exitflag,output] = fminbnd(___

描述

例子

x= fminbnd (有趣的x1x2返回一个值x中所描述的标量值函数的局部最小值有趣的在这段时间X1 < x < x2

例子

x= fminbnd (有趣的x1x2选项中指定的优化选项使之最小化选项.使用optimset设置这些选项。

x= fminbnd (问题求最小值问题,在那里问题是一个结构。

创建问题通过从优化应用程序导出问题,如中所述导出你的作品

例子

xfval= fminbnd(___,对于任何输入参数,返回中计算的目标函数值有趣的在解决方案中x

xfvalexitflag= fminbnd(___另外返回一个值exitflag描述退出条件。

例子

xfvalexitflag输出= fminbnd(___另外返回一个结构输出包含关于优化的信息。

例子

全部折叠

找到点函数取值域内的最小值

乐趣= @罪恶;X1 = 0;X2 = 2*;X = fminbnd(fun,x1,x2)
X = 4.7124

为了显示精度,这与正确的值相同

3 *π/ 2
Ans = 4.7124

最小化由单独函数文件指定的函数。函数接受一个点x并返回一个实标量,表示目标函数在x

将以下函数编写为文件,并将该文件另存为scalarobjective.m在MATLAB®路径上。

函数F = scalarobjective(x) F = 0;K = -10:10 f = f + (K +1)²*cos(K *x)*exp(-k²/2);结束

找到x,最大限度地减少scalarobjective在区间1 <=x< = 3。

X = fminbnd(@scalarobjective,1,3)
X = 2.0061

当有额外参数时,最小化函数。这个函数是否有一个取决于参数值的最小值.的匿名函数其中包括参数的值.在区间内最小化这个函数

A = 9/7;Fun = @(x)sin(x-a);X = fminbnd(fun,1,2*pi)
X = 5.9981

这个答案是正确的;理论值为

3* /2 + 9/7
Ans = 5.9981

有关包含额外参数的详细信息,请参见参数化功能(MATLAB)。

监控步骤fminbnd以最小化函数

乐趣= @罪恶;X1 = 0;X2 = 2*;选项= optimset(“显示”“通路”);X = fminbnd(fun,x1,x2,options)
函数函数计数x f(x)程序1 2.39996 0.67549 initial 2 3.88322 -0.67549 golden 3 4.79993 -0.996171 golden 4 5.08984 -0.929607抛物线5 4.70582 -0.999978抛物线6 4.7118 -1抛物线7 4.71239 -1抛物线8 4.71236 -1抛物线9 4.71242 -1抛物线优化终止:当前x满足使用OPTIONS的终止条件。TolX为1.000000e-04
X = 4.7124

求的最小值的位置的最小值

乐趣= @罪恶;[x,fval] = fminbnd(fun,1,2*pi)
X = 4.7124
Fval = -1.0000

属性的所有信息fminbnd通过请求所有输出来解决问题。另外,使用绘图函数监视解决方案过程。

乐趣= @罪恶;X1 = 0;X2 = 2*;选项= optimset(“PlotFcns”, @optimplotfval);[x,fval,exitflag,output] = fminbnd(fun,x1,x2,options)

X = 4.7124
Fval = -1.0000
Exitflag = 1
输出=带字段的结构:迭代:8 funcCount: 9算法:'黄金分割搜索,抛物线插值'消息:'优化终止:…'

输入参数

全部折叠

函数来最小化,指定为函数句柄或函数名。有趣的函数是否接受实标量x并返回一个实标量f(目标函数值为x).

指定有趣的作为文件的函数句柄:

X = fminbnd(@myfun,x1,x2)

在哪里myfun是一个MATLAB®函数如

函数f = myfun(x) f =…计算x处的函数值

你也可以指定有趣的作为匿名函数的函数句柄:

X = fminbnd(@(X)范数(X)^2,x1,x2);

例子:Fun = @(x)-x*exp(-3*x)

数据类型:字符|function_handle|字符串

下界,指定为有限实标量。

例子:X1 = -3

数据类型:

上界,指定为有限实标量。

例子:X2 = 5

数据类型:

优化选项,指定为结构,如optimset的回报。你可以使用optimset在选项结构中设置或更改这些字段的值。看到优化选项参考有关详细信息。

显示

显示水平(见迭代显示):

  • “通知”(默认)仅在函数不收敛时显示输出。

  • “关闭”“没有”不显示输出。

  • “通路”显示每次迭代的输出。

  • “最后一次”只显示最终输出。

FunValCheck

检查目标函数值是否有效。默认的“关闭”允许fminbnd当目标函数返回值为时继续复杂的.的“上”当目标函数返回值为时,Setting将抛出错误复杂的

MaxFunEvals

允许的最大函数求值数,一个正整数。默认为500.看到公差和停止标准而且迭代和功能计数

麦克斯特

允许的最大迭代次数,一个正整数。默认为500.看到公差和停止标准而且迭代和功能计数

OutputFcn

指定优化函数在每次迭代时调用的一个或多个用户定义函数,可以作为函数句柄,也可以作为函数句柄的单元格数组。默认值为none ([]).看到输出函数

PlotFcns

在算法执行时绘制各种进度度量图,从预定义的图中选择或编写自己的图。传递一个函数句柄或函数句柄的单元格数组。默认值为none ([]).

  • @optimplotx绘制当前点

  • @optimplotfunccount绘制函数计数图

  • @optimplotfval绘制函数值

有关编写自定义绘图函数的信息,请参见绘制函数

TolX

终止公差x,为正标量。默认为1的军医.看到公差和停止标准

例子:options = optimset('Display','iter')

数据类型:结构体

问题结构,指定为具有以下字段的结构。

字段名 条目

客观的

目标函数

x1

左端点

x2

正确的端点

解算器

“fminbnd”

选项

返回的选项结构optimset

求a的最简单方法问题结构是从优化应用程序导出问题。

数据类型:结构体

输出参数

全部折叠

解,作为实标量返回。通常情况下,x什么时候局部解决问题exitflag是正的。有关解决方案质量的信息,请参见当求解器成功时

目标函数在解处的值,作为实数返回。一般来说,fval有趣的(x)

原因fminbnd停止,以整数形式返回。

1

函数收敛到一个解x

0

超过迭代次数选项。麦克斯特或者超出了函数求值的数量选项。MaxFunEvals

-1

被输出函数或绘图函数停止。

-2

边界是不一致的,意思是X1 > x2

关于优化过程的信息,作为一个带字段的结构返回:

迭代

迭代次数

funcCount

函数求值的数量

算法

“黄金分割搜索,抛物线插值”

消息

退出消息

限制

  • 要最小化的函数必须是连续的。

  • fminbnd可能只会给出局部的解决方案。万博 尤文图斯

  • fminbnd当解在区间的边界上时可以表现出缓慢的收敛。在这种情况下,fmincon通常会给出更快更准确的答案。万博 尤文图斯

算法

fminbnd是函数文件。该算法基于黄金分割搜索和抛物线插值。除非左端点x1非常接近正确的端点x2fminbnd没有评估有趣的在端点处,所以有趣的只需要定义为x在这段时间x1<x<x2

如果最小值实际发生在x1x2fminbnd返回一个点x在间隔的内部(x1x2),接近最小值。在这种情况下,的距离x离最小值不大于2*(TolX + 3*abs(x)*根号(eps)).看到[1][2]查看算法的详细信息。

参考文献

[1]福赛、g.e.、m.a.马尔科姆和c.b.莫勒。计算机数学计算方法“,”恩格尔伍德悬崖,新泽西州:普伦蒂斯大厅,1976年。

布伦特,理查德。P.无导数极小化算法。恩格尔伍德悬崖,新泽西州:Prentice-Hall, 1973。

扩展功能

另请参阅

|||

主题

R2006a之前介绍

这个话题有用吗?