厦门自主建站模板,ssh可以做wap网站么,建筑设计作品展示网站,装修计算器在线计算实验二 一维搜索方法的MATLAB实现
实验的目的和要求#xff1a;通过本次实验应使学生掌握如何使用MATLAB软件进行一维搜索#xff0c;并学会对具体问题进行分析。
实验内容#xff1a;
#xff11;、0.618法的MATLAB实现
#xff12;、Fibonacci法的MATLAB实现
学…实验二 一维搜索方法的MATLAB实现
实验的目的和要求通过本次实验应使学生掌握如何使用MATLAB软件进行一维搜索并学会对具体问题进行分析。
实验内容
、0.618法的MATLAB实现
、Fibonacci法的MATLAB实现
学习建议
本次实验是学生初次使用MATLAB进行优化问题的实验本次实验就是要通过对一些具体问题的分析学会软件的操作并加深对理论知识的理解。
重点和难点
具体问题的步长因子的确定理解、掌握精度与效率的关系。
实验内容
0.618法和Fibonacci法都是分割方法其基本思想是通过取试探点和进行函数值的比较使包含极小点的搜索区间不断缩短当区间长度缩短到一定程度时区间上每个点的函数值均接近极小值从而各点可以看作为极小点的近似。这类方法仅需计算函数值不涉及导数又称直接法。他们用途很广尤其适用于非光滑及导数表达式复杂或写不出的情形。
注意这些方法要求所考虑区间上的目标函数是单峰函数如果这个条件不满足我们可以把所考虑的区间分成若干个小区间在每个区间上的函数式单峰的。这样我们在每个小区间上求极小点然后选取其中的最小点。
一 0.618法
1.0.618法方法原理:
0.618 法的基本思想是通过取试探点使包含极小点的区间(不确定区间)不断缩短, 当区间长度小到一定程度时, 区间上各点的函数值均接近极小值, 因此任意一点都可作为极小点的近似.
0.618 法计算试探点的公式: 2.0.618法的算法步骤:
①置初始区间及精度要求, 计算试探点和, 计算函数值和. 计算公式是 令.
②若, 则停止计算. 否则, 当时, 转步骤③; 当时, 转步骤④.
③置, , ,, 计算函数值, 转步骤⑤.
④置, , ,, 计算函数值, 转步骤⑤.
⑤置, 返回步骤②.
MATLAB实现:
3.代码及数值算例:
(1) 程序源代码:
function [ X,FMIN,K ] find0618( f,a1,b1,e )% [ X,FMIN,K ] find0618( f,a1,b1,e ) 0.618法一维搜索% f 目标函数% a1,b1初始区间% e 精度要求% X 极小点% FMIN极小值% K 迭代次数% 2014 张超aa1;bb1;k1;ra0.328*(b-a);ua0.618*(b-a);while 1if f(r)f(u)if (b-r)eu;break;else ar;bb;ru;ua0.618*(b-a);endelseif (u-a)er;break;else aa;bu;ur;ra0.382*(b-a);endkk1;endX(ru)/2;FMINdouble(f(X));Kk;end(2) 数值算例:
Min f(x)2xx – x – 1;
初始区间, 精度e0.16.
键入命令并输出结果
syms xf(x)2*x^2-x-1;a1-1;b11;e0.16;[X,FMIN,K]find0618(f,a1,b1,e)X 0.2258FMIN -1.1238K 6二 Fibonacci法
1.Fibonacci法基本原理和步骤
思想搜索区间长度缩短率采用Fibonacci数
1 1 2 3 5 8 13 21 34 55 89 …… MATLAB实现:
2.代码及数值算例:
(1) 程序源代码:
function [ X,Fmin,K] fibonacci( f,a0,b0,e )% fibonacci() Fibonacci法求极小值 % X 极值点% Fmin 极小值% K 需要用到第K个Fibonacci数% a0,b0 初始搜索区间% e 精度% 张超编写于2014/04/01aa0;bb0;F[1 1];i1;while F(i)(b-a)/e F(i2)F(i)F(i1);ii1;endmi;raF(m-2)/F(m)*(b-a);uaF(m-1)/F(m)*(b-a);for k1:m-3 if f(r)f(u) aa;bu;ur;raF(m-k-2)/F(m-k)*(b-a); else ar;bb;ru;uaF(m-k-1)/F(m-k)*(b-a); endendX(ru)/2;Fmindouble(f(X));Km; end(2) 数值算例:
Min f(x) x*x – x 2;
初始区间, 精度e0.08.
容易验证在此区间上的函数为严格凸函数。为了进行
比较我们给出其精确解t*0.5,f(t*)1.75。
键入命令并输出结果
syms xf(x)x^2-x2;a1-1;b13;e0.08;[X,FMIN,K]fibonacci(f,a1,b1,e)X 0.5273FMIN 1.7507K 10