资源描述
高等数学 上机教学(四) 函数的极值与优化 上机目的 上机内容 MATLAB 2、会使用 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 = 20.0855 x=1,2; f2(x) ans = 20.0855 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 = -1.2500 注 :此时函数很简单,故没有使用 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 0.5000 fval =0.5000 ( 1)、此函数与 fminsearch不同的地方在于使用的 搜索方法不同,它使用牛顿法搜索最值,在效率上 有所提高; ( 2)、使用格式与 fminsearch类似: x,fval= fminunc(f,x0) 其中 f为待求最值的向量函数, x0为搜索过程开 始时自变量的初始值。 例 : fminunc(f,1,2) 含义为:在 x=1,2附近搜寻 函数 f的最小值。 2、 fminunc 第三节 无约束最优化问题 求解无约束最优化问题的的基本思想 * Matlab优化工具箱简介 Xf n EX m i n 其中 1 : EEf n 标准形式: 一、求解无约束最优化问题的基本思想 求解的基本思想 ( 以二元函数为例 ) 1x 2x )( 21 xxf 0 1x 2x 0 5 3 1 0X 1X 2X )( 0Xf )( 1Xf )( 2Xf 连 续 可 微 XfnEX m a x = m i n XfnEX 多局部极小 298.0f 0f 298.0f 唯一极小 (全局极小 ) 2122212121 322)( xxxxxxxxf 搜索过程 2 1221221 )1()(1 0 0)(m i n xxxxxf 最优点 (1 1) 初始点 (-1 1) 1x 2x f -1 1 4.00 -0.79 0.58 3.39 -0.53 0.23 2.60 -0.18 0.00 1.50 0.09 -0.03 0.98 0.37 0.11 0.47 0.59 0.33 0.20 0.80 0.63 0.05 0.95 0.90 0.003 0.99 0.99 1E-4 0.999 0.998 1E-5 0.9997 0.9998 1E-8 二、用 Matlab解无约束优化问题(举例说明) 1. 一元函数无约束优化问题 : m in f ( x ) 21 xxx 其中( 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( .) 运行结果: x min = 3. 927 0 ym in = -0. 02 79 x max = 0 .78 54 ym ax = 0. 64 48 例 1 求 f = 2 xe x s i n 在 0 x 8 中的最小值与最大值 解 在 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米的正方形铁板,在四个角剪去相等的正方形以 制成方形无盖水槽,问如何剪法使水槽的容积最大? 设剪去的正方形的边长为 x ,则水槽的容积为: 2( 3 2 )xx 建立无约束优化模型为: min y= - 2( 3 2 )xx , 0x 0 ,且 a 11 a 12 ; 同理, p 2 = b 2 - a 21 x 1 - a 22 x 2 , b 2 , a 21 , a 22 0 ,且 a 22 a 2 1 . ( 2)成本与产量成负指数关系 甲的成本随其产量的增长而降低 , 且有一个渐进值 , 可以假设为 负指数关系 , 即 : 0, 111111 11 crcerq x 同理, 0, 222222 22 crcerq x 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-文件 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=23.9025 62.4977 z=-6.4135e+003 即甲的产量为 23.9025,乙的产量为 62.4977,最大利润为 6413.5. 1、求函数 在区间 -10,10内的最值? 2、求函数 在区间 -1,3内的最值? 3、某工厂要制作一个容积为 100立方米的无盖长方体 容器,问:怎样制作材料最省? 4、要制作一表面积为 108平米的水池,问:怎样选择 长宽高,能使得容积最大? 上机作业(四) 2( ) 3 2f x x x 2 2 2 3 4() 22 xxfx xx 5、 梯子长度问题 ( 选作 ) 一楼房的后面是一个很大的花园 . 在花园中紧靠着 楼房有一个温室 ,温室伸入花园 2m,高 3m,温室正上 方是楼房的窗台 . 清洁工打扫窗台周围 ,他得用梯 子越过温室 ,一头放在花 园中 ,一头靠在楼房的墙 上 . 因为温室是不能承 受梯子压力的 ,所以梯子 太短是不行的 .现清洁工 只有一架 7m长的梯子 ,你 认为它能达到要求吗 ? 能满足要求的梯子的 最小长度为多少 ? 2009 年 6 月
展开阅读全文