理论教育 运筹实验指导:黄金分割法及MATLAB程序

运筹实验指导:黄金分割法及MATLAB程序

时间:2023-11-17 理论教育 版权反馈
【摘要】:黄金分割法是一种常用的精确一维搜索。黄金分割法也是建立在区间消去法原理基础上的试探方法,即在搜索区间[a,b]内适当插入两点a1、a2,并计算其函数值。黄金分割法是用于一元函数f在给定的初始区间[a,b]内搜索极小值点a的一种方法。根据以上步骤,编写黄金分割算法的MATLAB代码如下:例5.1根据黄金分割法编写程序,求函数f=6 [tan(1-x)]e30x在区间[0,1]上的极大值。

运筹实验指导:黄金分割法及MATLAB程序

黄金分割法是一种常用的精确一维搜索。它适用于在已知极值区间的前提下,利用不断缩小区间的思想,最终得出极值的近似值。该方法只要求函数单峰,可以不连续。因此,这种方法的适用范围非常广泛。

黄金分割法也是建立在区间消去法原理基础上的试探方法,即在搜索区间[a,b]内适当插入两点a1、a2,并计算其函数值。a1、a2将原来区间分成三段,再应用函数的单峰性质,通过函数值大小的比较,删除其中一段,使搜索区间得以缩小。然后在保留下来的区间上做同样的处理,如此迭代下去,使搜索区间无限缩小,从而得到极小值点的数值近似解。

黄金分割法是用于一元函数f(x)在给定的初始区间[a,b]内搜索极小值点a的一种方法。它是优化计算中的经典算法,以算法简单、收敛速度均匀、效果较好著称,是具许多优化算法的基础。但它只适用于一维区间上的凸函数,即只在单峰区间内才能进行一维寻优,其收敛效率较低。其基本原理是依照去劣存优原则、对称原则及等比收缩原则来逐步缩小搜索区间。黄金分割法的基本步骤如下:

①给定区间[a,b]及eps>0;

②计算r=a+0.382(b-a),u=a+0.618(b-a);

③若f(r)>f(u),则进行下一步,否则,直接进行第⑤步;

④若u-r<eps,则停止计算,输出x=u,f=f(u),否则,令a=r,r=u,u=a+0.618(b-a),转到第③步;

⑤若u-r<eps,则停止计算,输出x=r,f=f(r),否则,令b=u,u=r,r=a+0.382(b-a),转到第③步。

根据以上步骤,编写黄金分割算法的MATLAB代码如下:

例5.1 根据黄金分割法编写程序,求函数f(x)=(sinx)6 [tan(1-x)]e30x在区间[0,1]上的极大值。

解:令g(x)=-f(x)=-(sinx)6 [tan(1-x)]e30x,求

编写函数代码如下:(www.daowen.com)

运行后结果如下:

,也就是说,f(x)在区间[0,1]上的极大值为-4.108 6e10

例5.2 求函数ψ x( )=2e-t+et在[1,1]内的极小值。

解:编写函数代码如下:

根据函数和黄金分割算法代码,求解代码如下:

即函数ψ x( )=2e-t+et在[1,1]内的极小值为0.346 6。

例5.3 函数f(x)=x2-2x,给定搜索区间为[-2,6],精度为0.000 1,求此函数的极小值点。

解:编写黄金分割算法代码如下:

再编写主程序MATLAB代码如下:

MATLAB运行得到结果如下:

即函数f(x)=x2-2x在区间[-2,6]上的点x=1处取得极小值-1,一共经历了24次迭代。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈