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