MATLAB学习与使用:求函数的极大值与极小值

2022年7月25日 23点热度 0人点赞

MATLAB优化工具箱提供了fminbnd求一元函数f(x)的极小值。然而-f(x)的极小值就是f(x)的极大值,所以fminbnd也可以求一元函数f(x)的极大值。下面以函数f(x)=sin(x)+x*cos(x)为例,介绍MATLAB求函数的极大值与极小值。

工具/原料

  • MATLAB
  • fminbnd
  • 极大值
  • 极小值

方法/步骤

  1. 1

    第一,利用MATLAB优化工具箱提供的fminbnd,求下图函数f(x)=sin(x)+x*cos(x)在区间[0, 5]上的极大值与极小值。

  2. 2

    第二,启动MATLAB,新建脚本(Ctrl+N),在脚本编辑区输入如下代码:

    close all; clear all; clc

    syms x

    f=@(x) sin(x)+x*cos(x);

    [xmin]=fminbnd(f,0,5),

    [fxmin]=double(subs(f,x,[xmin]))

    [xmax]=fminbnd(inline(-f(x)),0,5)

    [fxmax]=double(subs(f,x,[xmax]))

    ezplot(f,[0,5]);hold on

    plot([xmin,xmax],subs(f,x,[xmin,xmax]),'ro','LineWidth',5)

    text(xmin,double(subs(f,x,xmin)+0.2),'极小值')

    text(xmax,double(subs(f,x,xmax)+0.2),'极大值')

    其中f=@(x)是通过匿名函数的方法定义函数,inline( )是通过内联函数的方法定义函数,见百度经验《MATLAB学习与使用:定义函数(3种方法)》,《

    MATLAB学习与使用:内联函数(inline)及其应用》。subs( )是置换函数,即求x取[xmin]或者[xmax]时,函数f的值。

  3. 3

    第三,保存和运行上述脚本,在命令行窗口返回如下结果:

    xmin =

        3.6436

    fxmin =

       -3.6752

    xmax =

        1.0769

    fxmax =

        1.3910

    也就是说,函数f(x)=sin(x)+x*cos(x)在区间[0, 5]上的极小值为 -3.6752,极大值为1.3910,分别位于在x=3.6436和x=1.0769处。

  4. 4

    第四,保存和运行上述脚本也会得到以下图像,我们可以看到函数f(x)=sin(x)+x*cos(x)的曲线,以及它在区间[0, 5]上的极大值与极小值。

  5. 5

    第五,关于fminbnd的详细介绍,可以在命令行窗口输入doc fminbnd,查看MATLAB帮助文档对它的介绍。

    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部

laozhao

这个人很懒,什么都没留下

文章评论