matlab函数的极值与优化.ppt
高等数学高等数学 上机教学(四)上机教学(四)函数的极值与优化函数的极值与优化上机目的上机目的上机内容上机内容MATLAB2、会使用、会使用Matlab解决无约束最优化问题解决无约束最优化问题.上机软件上机软件1、会使用、会使用Matlab求函数的极值;求函数的极值;1、Matlab中函数的输入与调用;中函数的输入与调用;2、函数极值的求法;、函数极值的求法;3、无约束最优化问题、无约束最优化问题.在在Matlab中,函数是采用中,函数是采用M文件的方式存储的。文件的方式存储的。具体步骤如下:具体步骤如下:1、新建一个、新建一个M文件:文件:通过点击主窗口左上的新建按钮。通过点击主窗口左上的新建按钮。2、输入函数内容:、输入函数内容:例:函数例:函数 f(x1,x2)=exp(X12+X2)应在应在M文件文件中输入如下:中输入如下:一、自变量为数量形式的函数的输入一、自变量为数量形式的函数的输入第一节第一节 Matlab中函数的输入与调用中函数的输入与调用注意:注意:(1)、函数标识关键字:)、函数标识关键字:function(2)、函数名:)、函数名:f1=f1 自变量自变量:(x1,x2)(3)、函数表达式:)、函数表达式:a=exp(x12+x2)函数表达式可以由多个式子组成。函数表达式可以由多个式子组成。(4)、给函数结果赋值:)、给函数结果赋值:f1=a 3、存储函数:、存储函数:点击编辑窗口的保存按钮。点击编辑窗口的保存按钮。注意注意:不要改变保存路径,文件名称必须和函数名称一致。不要改变保存路径,文件名称必须和函数名称一致。4、函数的调用:、函数的调用:函数保存后,在命令窗口中即可调用该函数。函数保存后,在命令窗口中即可调用该函数。如求上述函数在如求上述函数在x1=1,x2=2处的函数值,即可在命令处的函数值,即可在命令窗口中输入:窗口中输入:f1(1,2)其中其中 f1 为刚才所输入的函数名。为刚才所输入的函数名。二、自变量为向量形式函数的输入二、自变量为向量形式函数的输入例:函数例:函数f(x)=exp(x(1)2+x(2).其中其中x=(x(1),x(2),即即x为一个二维向量。为一个二维向量。此时的输入与调用方式与数量时不同此时的输入与调用方式与数量时不同。1、输入:、输入:2、调用:、调用:此时自变量为向量,调用格式为:此时自变量为向量,调用格式为:f2(1,2)或或 x=1 2;f2(x)即,自变量需采用向量形式输入。即,自变量需采用向量形式输入。3、实际运行结果如下:、实际运行结果如下:f2(1,2)ans=x=1,2;f2(x)ans=Matlab中,求一元函数极值的函数为中,求一元函数极值的函数为 fminbnd 1、此函数最简输入格式为:、此函数最简输入格式为:x=fminbnd(f,a,b)含义为:含义为:求函数求函数f在区间在区间a,b上的最小值点上的最小值点(自变量值自变量值).2、对于最大值问题,需转化为最小值问题来处理。、对于最大值问题,需转化为最小值问题来处理。(-f(x)在区间在区间a,b上的最小值就是上的最小值就是f(x)在在a,b的最的最大值)大值)第二节第二节 函数极值的求法函数极值的求法一、一元函数极值的求法一、一元函数极值的求法3、常用格式、常用格式x,fval=fminbnd(f,a,b).结果中,结果中,fval为最小值,为最小值,x为取到最小值的点。为取到最小值的点。例:例:Matlab命令:命令:x,fval=fminbnd(x.2+3*x+1,-2,3)含义是:含义是:求函数求函数f(x)=x2+3*x+1在在-2,3内的最小值。内的最小值。结果为结果为x=-1.5000 fval注注:此时函数很简单,故没有使用:此时函数很简单,故没有使用M文件。文件。多元函数的最小值问题,在多元函数的最小值问题,在Matlab中有中有2个经常个经常使用的函数:使用的函数:1、fminsearch 2、fminunc 注意注意:(1)、在使用这两个函数时,必须首先用)、在使用这两个函数时,必须首先用M文文件的形式存储待求最值的函数,并且需以向量函数件的形式存储待求最值的函数,并且需以向量函数的形式表达;的形式表达;(2)、最大值问题需转化为最小值问题。)、最大值问题需转化为最小值问题。二、多元函数极值的求法二、多元函数极值的求法(1)、此函数使用单纯型法搜索最值;)、此函数使用单纯型法搜索最值;(2)、使用格式:)、使用格式:x,fval=fminsearch(f,x0)其中其中f为待求最值的向量函数,为待求最值的向量函数,x0为搜索过程为搜索过程开始时自变量的初始值。开始时自变量的初始值。例:例:fminsearch(f,1,2)含义为:在含义为:在x=1,2附近搜附近搜寻函数寻函数f的最小值。的最小值。1、fminsearch 例:例:求函数求函数f(x,y)=-(x+y)+(x2+y2+1)在在x=1,y=2 附近的最小值点。附近的最小值点。解决步骤:解决步骤:1、建立、建立M文件,保存函数文件,保存函数f;M文件内容为:文件内容为:function f1=f1(x)a=-(x(1)+x(2);b=(x(1)2+x(2)2+1);f1=a+b;2、调用、调用fminsearch函数求最值函数求最值.在命令窗口中,输入:在命令窗口中,输入:x0=1,2;x,fval=fminsearch(f1,x0)3、输出结果为:、输出结果为:X=0.5000 fval(1)、此函数与)、此函数与fminsearch不同的地方在于使用的不同的地方在于使用的搜索方法不同,它使用牛顿法搜索最值,在效率上搜索方法不同,它使用牛顿法搜索最值,在效率上有所提高;有所提高;(2)、使用格式与)、使用格式与fminsearch类似:类似:x,fval=fminunc(f,x0)其中其中f为待求最值的向量函数,为待求最值的向量函数,x0为搜索过程开为搜索过程开始时自变量的初始值。始时自变量的初始值。例例:fminunc(f,1,2)含义为:在含义为:在x=1,2附近搜寻附近搜寻函数函数f的最小值。的最小值。2、fminunc 第三节第三节 无约束最优化问题无约束最优化问题求解无约束最优化问题的的基本思想求解无约束最优化问题的的基本思想*Matlab优化工具箱简介优化工具箱简介标准形式:标准形式:一、求解无约束最优化问题的基本思想一、求解无约束最优化问题的基本思想求解的基本思想求解的基本思想 (以二元函数为例)531连续可微多局部极小 唯一极小(全局极小)搜索过程搜索过程最优点 (1 1)初始点 (-1 1)-111E-41E-51E-8二、用二、用Matlab解无约束优化问题(举例说明)解无约束优化问题(举例说明)其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。常用格式如下:常用格式如下:(1)x=fminbnd(fun,x1,x2)(2)x=fminbnd(fun,x1,x2,options)(3)x,fval=fminbnd(.)(4)x,fval,exitflag=fminbnd(.)(5)x,fval,exitflag,output=fminbnd(.)解解 在在matlab命令窗口中输入:命令窗口中输入:f=2*exp(-x).*sin(x);fplot(f,0,8);%作图语句作图语句 xmin,ymin=fminbnd(f,0,8)f1=-2*exp(-x).*sin(x);xmax,ymax=fminbnd(f1,0,8)例例2 对边长为对边长为3米的正方形铁板,在四个角剪去相等的正方形以米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?制成方形无盖水槽,问如何剪法使水槽的容积最大?解解先编写先编写M文件如下文件如下:function f=fun0(x)f=-(3-2*x).2*x;主程序为:主程序为:x,fval=fminbnd(fun0,0,1.5);xmax=x fmax=-fval运算结果为运算结果为:xmax=0.5000,fmax=2.0000.即剪掉的正方形的边即剪掉的正方形的边长为米时水槽的容积最大长为米时水槽的容积最大,最大容积为最大容积为2立方米立方米.命令格式为命令格式为:(1)x=fminunc(fun,X0);或);或x=fminsearch(fun,X0)(2)x=fminunc(fun,X0,options););或或x=fminsearch(fun,X0,options)(3)x,fval=fminunc(.););或或x,fval=fminsearch(.)(4)x,fval,exitflag=fminunc(.););或或x,fval,exitflag=fminsearch(5)x,fval,exitflag,output=fminunc(.););或或x,fval,exitflag,output=fminsearch(.)2、多元函数无约束优化问题、多元函数无约束优化问题标准型为:标准型为:min F(X)3 fminunc为中型优化算法的步长一维搜索提供了两种算法,由为中型优化算法的步长一维搜索提供了两种算法,由options中参中参数数LineSearchType控制:控制:LineSearchType=quadcubic(缺省值缺省值),混合的二次和三次多项式插值;,混合的二次和三次多项式插值;LineSearchType=cubicpoly,三次多项式插,三次多项式插使用使用fminunc和和 fminsearch可能会得到局部最优解可能会得到局部最优解.说明说明:fminsearch是用单纯形法寻优是用单纯形法寻优.fminunc的算法见以下几点说明:的算法见以下几点说明:1 fminunc为无约束优化提供了大型优化和中型优化算法。由为无约束优化提供了大型优化和中型优化算法。由options中中 的参数的参数LargeScale控制:控制:LargeScale=on(默认值默认值),使用大型算法使用大型算法LargeScale=off(默认值默认值),使用中型算法使用中型算法2 fminunc为中型优化算法的搜索方向提供了为中型优化算法的搜索方向提供了4种算法,由种算法,由 options中的参中的参数数HessUpdate控制:控制:HessUpdate=bfgs(默认值),拟牛顿法的(默认值),拟牛顿法的BFGS公式;公式;HessUpdate=dfp,拟牛顿法的,拟牛顿法的DFP公式;公式;HessUpdate=steepdesc,最速下降法,最速下降法例例3 min f(x)=(4x12+2x22+4x1x2+2x2+1)*exp(x1)1、编写、编写M-文件文件 fun1.m:function f=fun1(x)f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);2、输入命令窗口中输入、输入命令窗口中输入:x0=-1,1;x=fminunc(fun1,x0);y=fun1(x)3、运行结果、运行结果:例例4 产销量的最佳安排产销量的最佳安排 某厂生产一种产品有甲、乙两个牌号,讨论在产销平某厂生产一种产品有甲、乙两个牌号,讨论在产销平衡的情况下如何确定各自的产量,使总利润最大衡的情况下如何确定各自的产量,使总利润最大.所谓产所谓产销平衡指工厂的产量等于市场上的销量销平衡指工厂的产量等于市场上的销量.2、基本假设、基本假设(1)价格与销量成线性关系)价格与销量成线性关系(2)成本与产量成负指数关系)成本与产量成负指数关系 3、模型建立、模型建立 若根据大量的统计数据若根据大量的统计数据,求出系数求出系数b1=100,a11=1,a12=0.1,b2=280,a21=0.2,a22=2,r1=30,1=0.015,c1=20,r2=100,2=0.02,c2=30,则则问题转化为无约束优化问题:求甲问题转化为无约束优化问题:求甲,乙两个牌号的产量乙两个牌号的产量x1,x2,使,使总利润总利润z最大最大.为简化模型为简化模型,先忽略成本先忽略成本,并令并令a12=0,a21=0,问题转化为求问题转化为求:z1=(b1-a11x1)x1+(b2-a22x2)x2 的极值的极值.显然其解为显然其解为x1=b1/2a11=50,x2=b2/2a22=70,我们把它作为原问题的初始值我们把它作为原问题的初始值.总利润为:总利润为:z(x1,x2)=(p1-q1)x1+(p2-q2)x2 4、模型求解、模型求解 (1).建立建立M-文件文件:function f=fun(x)y1=(100-x(1)-0.1*x(2)-(30*exp(-0.015*x(1)+20)*x(1);y2=(280-0.2*x(1)-2*x(2)-(100*exp(-0.02*x(2)+30)*x(2);f=-y1-y2;(2).输入命令输入命令:x0=50,70;x=fminunc(fun,x0),z=fun(x)(3).计算结果计算结果:x=23.9025 62.4977 z=-6.4135e+003 即甲的产量为即甲的产量为23.9025,乙的产量为乙的产量为62.4977,最大利润为最大利润为6413.5.1、求函数、求函数 在区间在区间-10,10内的最值?内的最值?2、求函数、求函数 在区间在区间-1,3内的最值?内的最值?3、某工厂要制作一个容积为、某工厂要制作一个容积为100立方米的无盖长方体立方米的无盖长方体容器,问:怎样制作材料最省?容器,问:怎样制作材料最省?4、要制作一表面积为、要制作一表面积为108平米的水池,问:怎样选择平米的水池,问:怎样选择长宽高,能使得容积最大?长宽高,能使得容积最大?上机作业(四)上机作业(四)5 5、梯子长度问题梯子长度问题 (选作选作)一楼房的后面是一个很大的花园一楼房的后面是一个很大的花园.在花园中紧靠着在花园中紧靠着楼房有一个温室楼房有一个温室,温室伸入花园温室伸入花园2m,2m,高高3m,3m,温室正上温室正上方是楼房的窗台方是楼房的窗台.清洁工打扫窗台周围清洁工打扫窗台周围,他得用梯他得用梯子越过温室子越过温室,一头放在花一头放在花园中园中,一头靠在楼房的墙一头靠在楼房的墙上上.因为温室是不能承因为温室是不能承受梯子压力的受梯子压力的,所以梯子所以梯子太短是不行的太短是不行的.现清洁工现清洁工只有一架只有一架7m7m长的梯子长的梯子,你你认为它能达到要求吗认为它能达到要求吗?能满足要求的梯子的能满足要求的梯子的最小长度为多少最小长度为多少?