首页 理论教育 寻找一元函数极值的实例及优化

寻找一元函数极值的实例及优化

时间:2023-07-02 理论教育 版权反馈
【摘要】:表4.6options参数的取值[x,fval]=fminbnd(…求sin在0<x<2π范围内的最小值的点。fminsearch函数和fminbnd函数的用法基本一致,两个不同之处在于:fminbnd函数的输入参数是寻找最小值的区间,且仅可以求解一元函数的极值;而fminsearch函数的输入参数为初始值。求函数y=1002+2的最小值。

寻找一元函数极值的实例及优化

在数学上,可以通过确定函数导数为零的点来确定极值点;但是在解析上难以求导的情况下,需要从数值上寻找函数的极值点。MATLAB为用户提供了两个完整功能的函数fminbnd和fmins来实现对一维和n维函数的最小值的求解。

值得注意的是,MATLAB并未向用户提供求最大值的命令,因为函数f(x)的最大值就是函数-f(x)的最小值,故fminbnd函数可用来求最大值和最小值。

1.一元函数的极小值

fimbnd函数用于查找单变量函数在确定区间上的最小值,它的调用格式如下:

x=fminbnd(fun,x1,x2):返回一个值x,该值是fun中描述的标量值函数在区间x1<x<x2中的局部最小值。

x=fminbnd(fun,x1,x2,options):options为指定优化参数选项,由OPTIMSET设定,具体取值见表4.6。

表4.6 options参数的取值

[x,fval]=fminbnd(…):fval为目标函数的最小值。

[x,fval,exitflag]=fminbnd(…):返回描述退出条件的值exitflag。若参数exitflag>0,表示函数收敛于x;若exitflag=0,表示达到了最大迭代次数;若exitflag<0,表示函数不收敛于x。

[x,fval,exitflag,output]=fminbnd(…):返回一个包含有关优化的信息的结构体output。若参数output=iterations,表示迭代次数;若output=funccount,表示函数赋值次数;若output=algorithm,表示所使用的算法。

【例4.16】 求sin(x)在0<x<2π范围内的最小值的点。

在MATLAB的命令行窗口中输入以下命令,并得出结果。

2.多元函数的极小值(www.xing528.com)

MATLAB为用户提供了fminsearch函数用于计算多元函数的极小值,该函数适用于不太平滑、难以计算梯度信息或梯度信息价值不大的函数。

fminsearch函数和fminbnd函数的用法基本一致,两个不同之处在于:fminbnd函数的输入参数是寻找最小值的区间,且仅可以求解一元函数的极值;而fminsearch函数的输入参数为初始值。

fminsearch函数的调用格式如下:

x=fminsearch(fun,x0):在点x0处开始并尝试求函数fun中的局部最小值x。

x=fminsearch(fun,x0,options):使用结构体options中指定优化选项求最小值。

x=fminsearch(problem):求结构体problem的最小值。

[x,fval]=fminsearch(…):fval返回目标函数fun在解x处的值。

[x,fval,exitflag]=fminsearch(…):返回描述退出条件的值exitflag。

[x,fval,exitflag,output]=fminsearch(…):返回结构体output及优化过程的信息。

【例4.17】 求函数y(x)=100(x2-x212+(1-x12的最小值。

由题意得,函数的最小值在(1,1)处取得,最小值为0。

在MATLAB的命令行窗口中输入以下命令,并得出结果。

从结果可知,函数的最小值在(1,1)点取得,极小值近似于0。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈