好好学习,天天向上,一流范文网欢迎您!
当前位置:首页 >> 最新范文 内容页

最优化方法(黄金分割和进退法)实验报告

最优化方法(黄金分割和进退法)实验报告 本文关键词:黄金分割,进退,最优化,实验,报告

最优化方法(黄金分割和进退法)实验报告 本文简介:最优化方法上机实验一维搜索方法的MATLAB实现姓名:班级:信息与计算科学学号:实验时间:2014/6/21一、实验目的:通过上机利用Matlab数学软件进行一维搜索,并学会对具体问题进行分析。并且熟悉Matlab软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸

最优化方法(黄金分割和进退法)实验报告 本文内容:

最优化方法上机实验

一维搜索方法的MATLAB实现

姓名:

班级:信息与计算科学

学号:

实验时间:

2014/6/21

一、实验目的:

通过上机利用Matlab数学软件进行一维搜索,并学会对具体问题进行分析。并且熟悉Matlab软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。

二、实验背景:

黄金分割法

它是一种基于区间收缩的极小点搜索算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。

1、算法原理

黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。

2、

算法步骤

用黄金分割法求无约束问题的基本步骤如下:

(1)选定初始区间及精度,计算试探点:

(2)若,则停止计算。否则当时转步骤(3)。

当转步骤(4)。

(3)

转步骤(5)

(4)

转步骤(5)

(5)

令,转步骤(2)。

算法的MATLAB实现

function

xmin=golden(f,a,b,e)

k=0;

x1=a+0.382*(b-a);

x2=a+0.618*(b-a);

while

b-a>e

f1=subs(f,x1);

f2=subs(f,x2);

if

f1>f2

a=x1;

x1=x2;

f1=f2;

x2=a+0.618*(b-a);

else

b=x2;

x2=x1;

f2=f1;

x1=a+0.382*(b-a);

end

k=k+1;

end

xmin=(a+b)/2;

fmin=subs(f,xmin)

fprintf(

k=/n

);

disp(k);

3、

实验结果(总结/方案)

黄金分割法求解极值实例。用黄金分割法求解下面函数的最小值:

进退法

1.

算法原理

进退法是用来确定搜索区间(包含极小值点的区间)的算法,其理论依据是:为单谷函数(只有一个极值点),且为其极小值点的一个搜索区间,对于任意,如果,则为极小值的搜索区间,如果,则为极小值的搜索区间。

因此,在给定初始点,及初始搜索步长的情况下,首先以初始步长向前搜索一步,计算。

(1)

如果

则可知搜索区间为,其中待求,为确定,后退一步计算,为缩小系数,且,直接找到合适的,使得,从而确定搜索区间。

(2)

如果

则可知搜索区间为,其中待求,为确定,前进一步计算,为放大系数,且,知道找到合适的,使得,从而确定搜索区间。

2.

算法步骤

用进退法求一维无约束问题的搜索区间(包含极小值点的区间)的基本算法步骤如下:

(1)

给定初始点,初始步长,令,,;

(2)

令,置;

(3)

若,则转步骤(4),否则转步骤(5);

(4)

令,,,令,转步骤(2);

(5)

若,则转步骤(6)否则转步骤(7);

(6)

令,,,转步骤(2);

(7)

令,停止计算,极小值点包含于区间

3.

算法的MATLAB实现

function

[A,B]=minJT(f,x0,h0,eps)

%目标函数:f;

%初始点:x0;

%初始步长:h0;

%精度:eps;

%目标函数取包含极值的区间的左端点:A;

%目标函数取包含极值的区间的右端点:B;

format

long;

if

nargin==3;

eps=1.0e-6;

end

x1=x0;

k=0;

h=h0;

while

1

x4=x1+h;%试探步

k=k+1;

f4=subs(f,findsym(f),x4);

f1=subs(f,findsym(f),x1);

if

f4

x2=x1;

x1=x4;

f2=f1;

f1=f4;

h=2*h;%加大步长

else

if

k==1

h=-h;%反向搜索

x2=x4;

f2=f4;

else

x3=x2;

x2=x1;

x1=x4;

break;

end

end

end

A=min(x1,x3);

B=x1+x3-A;

format

short;

例:

取初始点为0,步长为0.1,用进退法求函数的极值区间。

TAG标签: