1、用MATLAB分析最小值与最大值的问题毕 业 论 文 题 目: 用MATLAB分析最小值和最大值的问题 姓 名: 木扎帕尔 木合塔尔 专 业: 数学与应用数学班 级: 2003-6班 院 (系): 数理信息学院 指导老师: 阿不力米提新 疆 师 范 大 学用MATLAB分析最小值和最大值的问题 新疆师范大学数理信息学院数学系03-6班 作者姓名:木扎帕尔.木合塔尔指导老师:阿不力米提2008年5月用MATLAB分析最小值和最大值的问题木扎帕尔.木合塔尔新疆师范大学数理信息学院03-6班摘要:咱们一般在学习和工作中碰到一些函数,并需要其最小值与最大值,本文讨论一些复杂的函数的最小值与最大值,用M
2、ATLAB来求解及分析.关键词:最小值;最大值;MATLAB.用MATLAB分析最小值和最大值的问题咱们在学习和工作中需要求解一些函数的最小值和最大值,并用最小值和最大值来分析日常生活中咱们碰到的一些问题.一般的问题咱们能直接计算出来,但对有一些问题来讲求救它的最小值和最大值很复杂,MATLAB具有壮大的计算功能,以下咱们要讨论的主要问题就是用MATLAB能计算出那些复杂的问题.先看以下例子1用钢板制造容积为V的无盖长方形水箱,问如何选择水箱的长,宽,高才最省钢板.解:设水箱长,宽,高别离是x,y,z.已知xyz=V,从而z=V/xy.水箱表面的面积 S=xy+V/xy(2x+2y)=xy+2
3、V(1/x+1/y),S的概念域D=(x,y)0x+,0y+.这个问题就是求函数S在区域D内的最小值.解方程组 S/x=y+2V(-1/)=y-2V/=0, S/y=x+2V(-1/)=x-2V/=0.在区域D内解得唯一稳定点(,).求二阶扁导数 S/=4V/,S/xy =1, S/=4V/. -S/.S/=1-16/. 在稳定点,=-30,从而,稳定点是S的极小点.因此,函数S在点取最小值.当x=,y=时, z=V/=/2,即无盖长方形水箱x=y=,z=/2,所需钢板最省. 2在已知周长为2p的一切三角形中,求出面积为最大的三角形.解:设三角形的三个边长是x,y,z.面积是.有海伦公式,有
4、=.已知x+y+z=2p或z=2p-x-y将它代入上面公式当中,有 =.因为三角形的每边长是正数而且小与半周长p,所以的概念域 D=(x,y)0xp,0yp.已知的稳定点与/p的稳定点相同.为计算简便,求 =/p=(p-x)(p-y)(x+y-p)的稳定点.解方程组 (x,y)=-(p-y)(x+y-p)+(p-x)(p-y)=(p-y)(2p-2x-y)=0. (x,y)=-(p-x)(x+y-p)+(p-x)(p-y)=(p-x)(2p-2y-x)=0.在区域D内有唯一稳定点(2p/3,2p/3).求二阶扁导数 (x,y)=-2(p-y), (x,y)=2(x+y)-3p, (x,y)=-
5、2(p-x). -(x,y) (x,y) =4+4xy+4-8px-8py+5. 在稳定点(2p/3,2p/3), =-/30,A=-2p/30.从而稳定点(2p/3,2p/3)是函数,即的极大点.由题意, 在稳定点(2p/3,2p/3)必取到最大值.当x=2p,y=2p/3时,z=2p-x-y=2p/3,即三角形三边长的和为定数时,等边三角形的面积最大.丛林失火了!消防站接到报警后派多少消防队员前去救火呢?派的队员越多,丛林的损失越小,可是救援的开支会越大,所以需要综合考虑丛林损失费和救援费与消防队员人数之间的关系,以总费用最小来决定派出队员的数量.问题分析 损失费通常正比于丛林烧毁的面积,
6、而烧毁面积于失火,灭火的时间有关,灭火时间又与灭火时间长短有关.记失火时刻为t=0 ,开始救火时刻为t=,灭火时刻为t=.设在时刻t丛林烧毁面积为B(t),则造成损失的丛林烧毁面积为B().建模要对函数B(t)的形式作出合理的简单假设.模型假设 需要对烧毁丛林的损失费,救援费及火势蔓延程度B/d的形式作出假设.1.损失费与丛林烧毁面积B()成正比,比例系数为烧毁单位面积的损失费.2.从失火到开始救火这段时间(0t)内,火势蔓延程度B/d与时间t成正比,比例系数称火势蔓延速度.3.派出消防队员x名,开始救火以后(t)火势蔓延速度降为-,其中可视为每一个队员的平均灭火速度.显然应有.4.每一个消防
7、队员单位时间的费用为,于是每一个队员的救火费用是(-);每一个队员的依次性支出是. (公式里的C(x)是这个优化模型的目标函数,把它输入MATLAB程序可以取得它的最终解.)无约束最优化问题在实际应用中也比较常见,如工程中常见的参数反演问题。另外,许多有约束最优化问题可以转化为无约束最优化问题进行求解。求解无约束最优化问题的方式主要有两类,即直接搜索法(Search method)和梯度法(Gradient method)。直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况,由于实际工程中很多问题都是非线性的,直接搜索法不失为一种有效的解决办法。常常利用的直接搜索法为单纯形法,另
8、外还有Hooke-Jeeves搜索法、Pavell共轭方向法等,其缺点是收敛速度慢。在函数的导数可求的情况下,梯度法是一种更优的方式,该法利用函数的梯度(一阶导数)和Hessian矩阵(二阶导数)构造算法,可以取得更快的收敛速度。函数f(x)的负梯度方向-f(x)即反映了函数的最大下降方向。当搜索方向取为负梯度方向时称为最速下降法。当需要最小化的函数有一狭长的谷形值域时,该法的效率很低,如Rosenbrock函数 f(x)=100(x1-x22)2+(1-x1)2它的最小值解为x=1,1,最小值为f(x)=0。这种类型的函数又称为香蕉函数。常见的梯度法有最速下降法、Newton法、Marqua
9、rt法、共轭梯度法和拟牛顿法(Quasi-Newton method)等。在所有这些方式中,用得最多的是拟牛顿法,这些方式在每次迭代进程中成立曲率信息,组成下式得二次模型问题:其中,Hessian矩阵H为一正定对称矩阵,c为常数向量,b为常数。对x求偏导数可以取得问题的最优解 相关函数介绍fminunc函数 功能:求多变量无约束函数的最小值。语法格式:x = fminunc(fun,x0)x = fminunc(fun,x0,options)x = fminunc(fun,x0,options,P1,P2,.)x,fval = fminunc(.)x,fval,exitflag = fminu
10、nc(.)x,fval,exitflag,output = fminunc(.)x,fval,exitflag,output,grad = fminunc(.)x,fval,exitflag,output,grad,hessian = fminunc(.)描述:fminunc给定初值,求多变量标量函数的最小值。常常利用于无约束非线性最优化问题。x = fminunc(fun,x0)给定初值x0,求fun函数的局部极小点x。x0可以是标量、向量或矩阵。x = fminunc(fun,x0,options)用options参数中指定的优化参数进行最小化。x = fminunc(fun,x0,opt
11、ions,P1,P2,.)将问题参数p一、p2等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的缺省值。x,fval = fminunc(.)将解x处目标函数的值返回到fval参数中。x,fval,exitflag = fminunc(.)返回exitflag值,描述函数的输出条件。x,fval,exitflag,output = fminunc(.)返回包括优化信息的结构输出。x,fval,exitflag,output,grad = fminunc(.)将解x处fun函数的梯度值返回到grad参数中。x,fval,exitflag,output,grad,
12、hessian = fminunc(.)将解x处目标函数的Hessian矩阵信息返回到hessian参数中。 注意:1对于求解平方和的问题,fminunc函数不是最好的选择,用lsqnonlin函数效果更佳。2利用大型方式时,必需通过将设置为on来提供梯度信息,不然将给出警告信息。算法:大型优化算法 若用户在fun函数中提供梯度信息,则缺省时函数将选择大型优化算法,该算法是基于内部映射牛顿法的子空间置信域法,理论描述可参见文献8,9。计算中的每一次迭代涉及到用PCG法求解大型线性系统取得的近似解。中型优化算法 此时fminunc函数的参数设置为off。该算法采用的是基于二次和三次混合插值一维搜
13、索法的BFGS拟牛顿法。该法通过BFGS公式来更新Hessian矩阵。通过将HessUpdate参数设置为dfp,可以用DFP公式来求得Hessian矩阵逆的近似。通过将HessUpdate参数设置为steepdesc,可以用最速下降法来更新Hessian矩阵。但一般不建议利用最速下降法。缺省时的一维搜索算法,当设置为quadcubic时,将采用二次和三次混合插值法。将设置为cubicpoly时,将采用三次插值法。第二种方式需要的目标函数计算次数更少,但梯度的计算次数更多。这样,若是提供了梯度信息,或能较容易地算得,则三次插值法是更佳的选择。局限性:1 目标函数必需是持续的。fminunc函数
14、有时会给出局部最优解。2 fminunc函数只对实数进行优化,即x必需为实数,而且f(x)必需返回实数。当x为复数时,必需将它分解为实部和虚部。3 在利用大型算法时,用户必需在fun函数中提供梯度(options参数中GradObj属性必需设置为on)。4 目前,若在fun函数中提供了解析梯度,则options参数DerivativeCheck不能用于大型算法以比较解析梯度和有限差分梯度。通过将options参数的MaxIter 属性设置为0来用中型方式查对导数。然后从头用大型方式求解问题。功能:求解多变量无约束函数的最小值。语法:x = fminsearch(fun,x0)x = fminsearch(fun,x0,options)x = fminsearch(fun,x0,options,P1,P2,.)x,fval = fminsearch(.)x,fval,exitflag = fminsearch(.)x,fval,exitflag,output = fminsearch(.)描述:fminsearch 求解多变量无约束函数的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1