MATLAB的fminbnd函数能够查找单变量函数在定区间上的最小值。fminbnd函数 是一个一维最小值,用于求由以下条件指定的问题的最小值:

minx f(x) such that x1<x<x2

x、x1 和 x2 是有限标量,f(x) 是返回标量的函数。

  • 1.语法
  • x=fminbnd(fun,x1,x2) x=fminbnd(fun,x1,x2,options) x=fminbnd(problem) [x,fval]=fminbnd(___) [x,fval,exitflag]=fminbnd(___) [x,fval,exitflag,output]=fminbnd(___) 说明 x=fminbnd(fun,x1,x2) 返回一个值 x,该值是 fun 中描述的标量值函数在区间 x1 < x < x2 中的 局部最小值。 x=fminbnd(fun,x1,x2,options) 使用 options 中指定的优化选项执行最小化计算。 使用 optimset 可设置这些选项。 x=fminbnd(problem) 求 problem 的最小值,其中 problem 是一个结构体。 对于任何输入参数,[x,fval=fminbnd(___) 返回目标函数在 fun 的解 x 处计算出的值。 [x,fval,exitflag]=fminbnd(___) 还返回描述退出条件的值 exitflag。 [x,fval,exitflag,output]=fminbnd(___) 还返回一个包含有关优化的信息的结构体 output。


    2.实例1

    程序

    clc; clear all; fun = @sin; x1 = 0; x2 = 2*pi; x = fminbnd(fun,x1,x2) x_b = 3*pi/2

    运行结果

    x = 4.7124 x_b = 4.7124

    求通过单独的函数文件指定的函数的最小值。函数接受输入点 x 并返回表示 x 处的目标函数值的实数标量。

    程序

    clc; clear all; x = fminbnd(@scalarobjective,1,3) function f = scalarobjective(x) f = 0; for k = -10:10 f = f (k 1)^2*cos(k*x)*exp(-k^2/2); end

    运行结果

    结果: x = 2.0061

    监视 fminbnd 计算函数 0在区间2*pi内的最小值时所采用的步骤。

    程序

    clc; clear all; fun = @sin; x1 = 0; x2 = 2*pi; options = optimset('Display','iter'); x = fminbnd(fun,x1,x2,options)

    运行结果

    结果: Func-count x f(x) Procedure 1 2.39996 0.67549 initial 2 3.88322 -0.67549 golden 3 4.79993 -0.996171 golden 4 5.08984 -0.929607 parabolic 5 4.70582 -0.999978 parabolic 6 4.7118 -1 parabolic 7 4.71239 -1 parabolic 8 4.71236 -1 parabolic 9 4.71242 -1 parabolic 优化已终止: 当前的 x 满足使用 1.000000e-04 的 OPTIONS.TolX 的终止条件 x = 4.7124

    通过请求所有输出返回有关 fminbnd 求解过程的所有信息。此外,还使用绘图函数监视求解过程。

    程序

    clc; clear all; close all; fun = @sin; x1 = 0; x2 = 2*pi; options = optimset('PlotFcns',@optimplotfval); [x,fval,exitflag,output] = fminbnd(fun,x1,x2,options)

    运行结果

    结果: x = 4.7124 fval = -1.0000 exitflag = 1 output = 包含以下字段的 struct: iterations: 8 funcCount: 9 algorithm: 'golden section search, parabolic interpolation' message: '优化已终止:↵ 当前的 x 满足使用 1.000000e-04 的 OPTIONS.TolX 的终止条件↵'

    matlab求函数值的方法(MATLAB的fminbnd函数求单变量函数极值)(1)


    3.实例2

    程序

    clc; clear all; close all; fx = @(x) -(0.4./sqrt(1 x.^2) - sqrt(1 x.^2) .* (1- 0.4./(1 x.^2)) x); [x0, f] =fminbnd(fx,0,2); % f利用负号求最小值 x = 0 :0.1: 2; y = feval(fx,x); %% ========maxvalue==== figure plot(x,-y,'b-','linewidth',2) hold on plot(x0,-f,'o','markersize',8,'linewidth',2,'markerFacecolor','g') xlabel('x') ylabel('y') text(x0, -f-0.02, 'maxvalue') %% ==============minvalue======= %% ========maxvalue==== figure(2) plot(x,y,'b-','linewidth',2) hold on plot(x0,f,'o','markersize',8,'linewidth',2,'markerFacecolor','g') xlabel('x') ylabel('y') text(x0, f 0.02, 'minvalue')

    运行结果

    matlab求函数值的方法(MATLAB的fminbnd函数求单变量函数极值)(2)

    matlab求函数值的方法(MATLAB的fminbnd函数求单变量函数极值)(3)


    4.函数参数设置

    优化选项,指定为结构体,例如 optimset 返回的结构体。可以使用 optimset 设置或更改 options 结构体中这些字段的值。

    Display

    显示级别(请参阅迭代显示):

    'notify'(默认值)仅在函数未收敛时显示输出。

    'off' 或 'none' 不显示输出。

    'iter' 在每次迭代时显示输出。

    'final' 仅显示最终输出。

    FunValCheck

    检查目标函数值是否有效。当目标函数返回的值为 complex 或 NaN 时,默认 'off' 允许 fminbnd 继续。当目标函数返回的值是 complex 或 NaN 时,'on' 设置会引发错误。

    MaxFunEvals

    允许的函数求值的最大次数,为正整数。默认值为 500。请参阅 容差和终止条件。

    MaxIter

    允许的迭代最大次数,为正整数。默认值为 500。请参阅 容差和终止条件。

    OutputFcn

    以函数句柄或函数句柄的元胞数组的形式来指定优化函数在每次迭代时调用的一个或多个用户定义函数。默认值是“无”([])。请参阅 输出函数。

    PlotFcns

    绘制执行算法过程中的各种测量值,从预定义绘图选择值,或记录您自己的值。传递函数句柄或函数句柄的元胞数组。默认值是“无”([])。

    @optimplotx 绘制当前点

    @optimplotfunccount 绘制函数计数

    @optimplotfval 绘制函数值

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

    TolX

    关于正标量 x 的终止容差。默认值为 1e-4。请参阅 容差和终止条件。

    exitflag - fminbnd 停止的原因

    整数

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

    1

    函数收敛于解 x。

    0

    迭代次数超出 options.MaxIter 或函数计算次数超过 options.MaxFunEvals。

    -1

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

    -2

    边界不一致,这意味着 x1 > x2。

    output - 有关优化过程的信息

    结构体

    有关优化过程的信息,以包含下列字段的结构体形式返回:

    iterations

    执行的迭代次数

    funcCount

    函数计算次数

    algorithm

    'golden section search, parabolic interpolation'

    message

    退出消息


    本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

    作 者 | 郭志龙编 辑 | 郭志龙校 对 | 郭志龙

    ,