用MATLAB分析最小值与最大值的问题.docx

上传人:b****1 文档编号:402034 上传时间:2022-10-09 格式:DOCX 页数:16 大小:48.73KB
下载 相关 举报
用MATLAB分析最小值与最大值的问题.docx_第1页
第1页 / 共16页
用MATLAB分析最小值与最大值的问题.docx_第2页
第2页 / 共16页
用MATLAB分析最小值与最大值的问题.docx_第3页
第3页 / 共16页
用MATLAB分析最小值与最大值的问题.docx_第4页
第4页 / 共16页
用MATLAB分析最小值与最大值的问题.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

用MATLAB分析最小值与最大值的问题.docx

《用MATLAB分析最小值与最大值的问题.docx》由会员分享,可在线阅读,更多相关《用MATLAB分析最小值与最大值的问题.docx(16页珍藏版)》请在冰豆网上搜索。

用MATLAB分析最小值与最大值的问题.docx

用MATLAB分析最小值与最大值的问题

毕业论文

题目:

用MATLAB分析最小值和最大值的问题

姓名:

木扎帕尔·木合塔尔

专业:

数学与应用数学

班级:

2003-6班

院(系):

数理信息学院

指导老师:

阿不力米提

 

新疆师范大学

 

用MATLAB分析最小值和最大值的问题

 

新疆师范大学数理信息学院数学系03-6班

 

作者姓名:

木扎帕尔.木合塔尔

 

指导老师:

阿不力米提

 

2008年5月

 

用MATLAB分析最小值和最大值的问题

木扎帕尔.木合塔尔

新疆师范大学数理信息学院03-6班

摘要:

咱们一般在学习和工作中碰到一些函数,并需要其最小值与最大值,本文讨论一些复杂的函数的最小值与最大值,用MATLAB来求解及分析.

关键词:

最小值;最大值;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

这个问题就是求函数S在区域D内的最小值.

解方程组

S/

x=y+2V(-1/

)=y-2V/

=0,

S/

y=x+2V(-1/

)=x-2V/

=0.

在区域D内解得唯一稳定点(

).求二阶扁导数

S/

=4V/

S/

x

y=1,

S/

=4V/

.

-

S/

.

S/

=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)︱0p}.

已知

的稳定点与

/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≤

)内,火势蔓延程度

B/

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矩阵逆的近似。

通过将HessUpdate参数设置为'steepdesc',可以用最速下降法来更新Hessian矩阵。

但一般不建议利用最速下降法。

缺省时的一维搜索算法,当设置为'quadcubic'时,将采用二次和三次混合插值法。

将设置为'cubicpoly'时,将采用三次插值法。

第二种方式需要的目标函数计算次数更少,但梯度的计算次数更多。

这样,若是提供了梯度信息,或能较容易地算得,则三次插值法是更佳的选择。

局限性:

1.         目标函数必需是持续的。

fminunc函数有时会给出局部最优解。

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