文档详情

《最优化方法黄金分割与进退法实验报告.doc

发布:2017-01-09约1.99千字共6页下载文档
文本预览下载声明
一维搜索方法的MATLAB实现 姓名: 班级:信息与计算科学 学号: 实验时间: 2014/6/21 一、实验目的: 通过上机利用Matlab数学软件进行一维搜索,并学会对具体问题进行分析。并且熟悉Matlab软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。 二、实验背景: 黄金分割法 它是一种基于区间收缩的极小点搜索算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。 1、算法原理 黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。 算法步骤 用黄金分割法求无约束问题的基本步骤如下: (1)选定初始区间及精度,计算试探点: 。 (2)若,则停止计算。否则当时转步骤(3)。 当转步骤(4)。 (3) 转步骤(5) (4) 转步骤(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-ae f1=subs(f,x1); f2=subs(f,x2); if f1f2 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); 实验结果(总结/方案) 黄金分割法求解极值实例。用黄金分割法求解下面函数的最小值: 进退法 算法原理 进退法是用来确定搜索区间(包含极小值点的区间)的算法,其理论依据是:为单谷函数(只有一个极值点),且为其极小值点的一个搜索区间,对于任意,如果,则为极小值的搜索区间,如果,则为极小值的搜索区间。 因此,在给定初始点,及初始搜索步长的情况下,首先以初始步长向前搜索一步,计算。 如果 则可知搜索区间为,其中待求,为确定,后退一步计算,为缩小系数,且,直接找到合适的,使得,从而确定搜索区间。 如果 则可知搜索区间为,其中待求,为确定,前进一步计算,为放大系数,且,知道找到合适的,使得,从而确定搜索区间。 算法步骤 用进退法求一维无约束问题的搜索区间(包含极小值点的区间)的基本算法步骤如下: 给定初始点,初始步长,令,,; 令,置; 若,则转步骤(4),否则转步骤(5); 令,,,令,转步骤(2); 若,则转步骤(6)否则转步骤(7); 令,,,转步骤(2); 令,停止计算,极小值点包含于区间 算法的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 f4f1 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,用进退法求函数的极值区间。 最优化方法上机实验 第 1 页 共 6 页 第 1 页 共 6 页
显示全部
相似文档