文档

fminbnd

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

fminbnd找到问题的最小值的一维最小化器是由

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

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

语法

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

描述

例子

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

例子

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

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

例子

(xfval= fminbnd()___中计算的目标函数的值有趣的解决方案x

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

例子

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

例子

全部折叠

找到那个点函数在这个范围内取最小值

Fun = @sin;X1 = 0;X2 = 2*pi;X = fminbind (fun,x1,x2)
X = 4.7124

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

3 *π/ 2
Ans = 4.7124

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

将下面的函数写入文件,并将文件保存为scalarobjective.m在您的MATLAB®路径。

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

找到x, minimzesscalarobjective在区间1 <=x< = 3。

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

最小化有额外参数的函数。这个函数有一个依赖于参数值的最小值吗。创建的匿名函数其中包括参数的值。在区间内最小化这个函数

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

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

3* /2 + 9/7
Ans = 5.9981

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

监控步骤fminbnd需要最小化函数

Fun = @sin;X1 = 0;X2 = 2*pi;Options = optimset(“显示”“通路”);X = fminbind (fun,x1,x2,options)
f -count 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

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

Fun = @sin;[x,fval] = fminbind (fun,1,2*pi)
X = 4.7124
Fval = -1.0000

的所有信息fminbnd通过请求所有输出来解决流程。另外,使用plot函数监视解决方案过程。

Fun = @sin;X1 = 0;X2 = 2*pi;Options = optimset(“PlotFcns”, @optimplotfval);[x,fval,exitflag,output] = fminbind (fun,x1,x2,options)
X = 4.7124
Fval = -1.0000
退出标志= 1
输出=带有字段的结构体:迭代:8 funcCount: 9算法:'黄金分割搜索,抛物线插值'消息:'优化终止:…'

输入参数

全部折叠

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

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

X = fminbind (@myfun,x1,x2)

在哪里myfun是MATLAB®函数,例如

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

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

X = fminbind (@(X)norm(X)^2,x1,x2);

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

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

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

例子:X1 = -3

数据类型:

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

例子:X2 = 5

数据类型:

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

显示

显示级别(参见迭代显示):

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

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

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

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

FunValCheck

检查目标函数值是否有效。默认的“关闭”允许fminbnd当目标函数返回的值为复杂的。的“上”设置在目标函数返回的值为时抛出错误复杂的

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当解在区间的边界上时,可以表现出缓慢的收敛。

算法

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

如果最小值出现在x1x2fminbnd返回一个点x在区间内(x1x2),接近最小值。在这种情况下,的距离x从最小化器得到的不超过2*(TolX + 3*abs(x)*sqrt(eps))。看到[1][2]有关算法的详细信息。

参考文献

[b]福赛斯,g.e, M. A.马尔科姆,C. B.莫勒。数学计算的计算机方法。恩格尔伍德悬崖,新泽西州:普伦蒂斯大厅,1976年。

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

扩展功能

R2006a之前引入

这个话题有帮助吗?