MATLAB优化工具箱提供了fminbnd求一元函数f(x)擢爻充种的极小值,然而-f(x)的极小值就是f(x)的癀溢汾鲜极大值,所以fminbnd也可以求一元函数f(x)的极大值。下面以函数f(x)=sin(x)+x*cos(x)为例,介绍MATLAB求函数的极大值与极小值。
方法/步骤
1、在脚本编辑区输入“closeall;clearall;clcsymsx咯悝滩镞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]);holdonplot([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),'极大值')”。
2、“f=@(x)”是通过匿名函数的方法定义函数,“inline()”是通过内联函数的方法定义函数。
3、“subs()”是置换函数,即求x取[xmin]或者[xmax]时,函数f的值。
4、运行脚本,在命令行窗口返回结果为“xmin=3.6436fxmin=-3.6752xmax=1.0769fxmax=1.3910”。
5、即函数f(x)=sin(x)+x*cos(x)在区间[0,5]上的极小值为-3.6752,极大值为1.3910,分别位于x=3.6436和x=1.0769。
6、运行脚本可以看到函数f(x)=sin(x)+x*cos(x)的曲线,以及它在区间[0,5]上的极大值与极小值。
7、关于fminbnd的详细介绍,可以在命令行窗口输入“docfminbnd”,查看MATLAB帮助文档对它的介绍。
8、总结如下。