最优化方法(黄金分割和进退法)实验报告 本文关键词:黄金分割,进退,最优化,实验,报告
最优化方法(黄金分割和进退法)实验报告 本文简介:最优化方法上机实验一维搜索方法的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,用进退法求函数的极值区间。