用MATLAB分析最小值与最大值的问题Word格式.docx
- 文档编号:13330484
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:16
- 大小:48.73KB
用MATLAB分析最小值与最大值的问题Word格式.docx
《用MATLAB分析最小值与最大值的问题Word格式.docx》由会员分享,可在线阅读,更多相关《用MATLAB分析最小值与最大值的问题Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
阿不力米提
2008年5月
新疆师范大学数理信息学院03-6班
摘要:
咱们一般在学习和工作中碰到一些函数,并需要其最小值与最大值,本文讨论一些复杂的函数的最小值与最大值,用MATLAB来求解及分析.
关键词:
最小值;
最大值;
MATLAB.
咱们在学习和工作中需要求解一些函数的最小值和最大值,并用最小值和最大值来分析日常生活中咱们碰到的一些问题.一般的问题咱们能直接计算出来,但对有一些问题来讲求救它的最小值和最大值很复杂,MATLAB具有壮大的计算功能,以下咱们要讨论的主要问题就是用MATLAB能计算出那些复杂的问题.
先看以下例子
[1]用钢板制造容积为V的无盖长方形水箱,问如何选择水箱的长,宽,高才最省钢板.
解:
设水箱长,宽,高别离是x,y,z.已知xyz=V,从而z=V/xy.水箱表面的面积
S=xy+V/xy(2x+2y)=xy+2V(1/x+1/y),
S的概念域D={(x,y)︱0<
x<
+∞,0<
y<
+∞}.
这个问题就是求函数S在区域D内的最小值.
解方程组
S/
x=y+2V(-1/
)=y-2V/
=0,
y=x+2V(-1/
)=x-2V/
=0.
在区域D内解得唯一稳定点(
).求二阶扁导数
=4V/
x
y=1,
.
-
=1-16
/
在稳定点
=-3<
0,且A=2>
0,从而,稳定点
是S的极小点.因此,函数S在点
取最小值.当x=
y=
时,
z=V/
=
/2,
即无盖长方形水箱x=y=
z=
/2,所需钢板最省.
[2]在已知周长为2p的一切三角形中,求出面积为最大的三角形.
设三角形的三个边长是x,y,z..面积是
.有海伦公式,有
已知x+y+z=2p或z=2p-x-y将它代入上面公式当中,有
因为三角形的每边长是正数而且小与半周长p,所以
的概念域
D={(x,y)︱0<
p,0<
p,x+y>
p}.
已知
的稳定点与
/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)=-2(p-x).
(x,y)
(x,y)
=4
+4xy+4
-8px-8py+5
在稳定点(2p/3,2p/3),
=-
/3<
0,A=-2p/3<
0.从而稳定点(2p/3,2p/3)是函数
即
的极大点.由题意,
在稳定点(2p/3,2p/3)必取到最大值.当x=2p,y=2p/3时,z=2p-x-y=2p/3,即三角形三边长的和为定数时,等边三角形的面积最大.
丛林失火了!
消防站接到报警后派多少消防队员前去救火呢?
派的队员越多,丛林的损失越小,可是救援的开支会越大,所以需要综合考虑丛林损失费和救援费与消防队员人数之间的关系,以总费用最小来决定派出队员的数量.
问题分析损失费通常正比于丛林烧毁的面积,而烧毁面积于失火,灭火的时间有关,灭火时间又与灭火时间长短有关.记失火时刻为t=0,开始救火时刻为t=
灭火时刻为t=
.设在时刻t丛林烧毁面积为B(t),则造成损失的丛林烧毁面积为B(
).建模要对函数B(t)的形式作出合理的简单假设.
模型假设需要对烧毁丛林的损失费,救援费及火势蔓延程度
B/
d的形式作出假设.
1.损失费与丛林烧毁面积B(
)成正比,比例系数
为烧毁单位面积的损失费.
2.从失火到开始救火这段时间(0≤t≤
)内,火势蔓延程度
d与时间t成正比,比例系数
称火势蔓延速度.
3.派出消防队员x名,开始救火以后(t≥
)火势蔓延速度降为
其中
可视为每一个队员的平均灭火速度.显然应有
<
4.每一个消防队员单位时间的费用为
于是每一个队员的救火费用是
(
);
每一个队员的依次性支出是
(公式里的C(x)是这个优化模型的目标函数,把它输入MATLAB程序可以取得它的最终解.)
无约束最优化问题在实际应用中也比较常见,如工程中常见的参数反演问题。
另外,许多有约束最优化问题可以转化为无约束最优化问题进行求解。
求解无约束最优化问题的方式主要有两类,即直接搜索法(Searchmethod)和梯度法(Gradientmethod)。
直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况,由于实际工程中很多问题都是非线性的,直接搜索法不失为一种有效的解决办法。
常常利用的直接搜索法为单纯形法,另外还有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法、Marquart法、共轭梯度法和拟牛顿法(Quasi-Newtonmethod)等。
在所有这些方式中,用得最多的是拟牛顿法,这些方式在每次迭代进程中成立曲率信息,组成下式得二次模型问题:
其中,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]=fminunc(...)
[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,options,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,hessian]=fminunc(...)将解x处目标函数的Hessian矩阵信息返回到hessian参数中。
注意:
1.对于求解平方和的问题,fminunc函数不是最好的选择,用lsqnonlin函数效果更佳。
2.利用大型方式时,必需通过将设置为'
on'
来提供梯度信息,不然将给出警告信息。
算法:
大型优化算法若用户在fun函数中提供梯度信息,则缺省时函数将选择大型优化算法,该算法是基于内部映射牛顿法的子空间置信域法,理论描述可参见文献[8],[9]。
计算中的每一次迭代涉及到用PCG法求解大型线性系统取得的近似解。
中型优化算法此时fminunc函数的参数设置为'
off'
。
该算法采用的是基于二次和三次混合插值一维搜索法的BFGS拟牛顿法。
该法通过BFGS公式来更新Hessian矩阵。
通过将HessUpdate参数设置为'
dfp'
,可以用DFP公式来求得Hessian矩阵逆的近似。
steepdesc'
,可以用最速下降法来更新Hessian矩阵。
但一般不建议利用最速下降法。
缺省时的一维搜索算法,当设置为'
quadcubic'
时,将采用二次和三次混合插值法。
将设置为'
cubicpoly'
时,将采用三次插值法。
第二种方式需要的目标函数计算次数更少,但梯度的计算次数更多。
这样,若是提供了梯度信息,或能较容易地算得,则三次插值法是更佳的选择。
局限性:
1.
目标函数必需是持续的。
fminunc函数有时会给出局部最优解。
2.
fminunc函数只对实数进行优化,即x必需为实数,而且f(x)必需返回实数。
当x为复数时,必需将它分解为实部和虚部。
3.
在利用大型算法时,用户必需在fun函数中提供梯度(options参数中GradObj属性必需设置为'
)。
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求解多变量无约束函数的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 分析 最小值 最大值 问题