当前位置:文档之家› 0.618法matlab实验报告

0.618法matlab实验报告

(1) 程序源代码:
function [x,k]=GSe(f,a,b,delta) % 0.618法求解单峰函数极小点 f=inline(f); N=10000; for k=1:N
m=a+0.382*(b-a); n=a+0.618*(b-a); if f(m)>f(n)
a=m; m=n; else b=n; n=m; end if abs(b-a)<delta x=0.5*(b+a);break; end end
实验报告
实验题目: 学生姓名: 学 号: 实验时间:
0.618 法的 MATLAB 实现
一.实验名称:
0.618 法求解单峰函数极小点
二.实验目的及要求:
1. 了解并熟悉 0.618 法的方法原理, 以及它的 MATLAB 实现. 2. 运用 0.618 法解单峰函数的极小点.
三.实验内容:
1. 0.618 法方法原理: 定 理 : 设 f 是 区 间 [a, b] 上 的 单 峰 函 数 , x(1) , x(2) [a, b] , 且 x(1) x(2) . 如 果
1 a1 0.382 (b1 a1), 1 a1 0.618(b1 a1). 令k 1.
② 若 bk ak L , 则 停 止 计 算 . 否 则 , 当 f (k ) f (k ) 时 , 转 步 骤 ③; 当
f (k ) f (k ) 时, 转步骤④.
bk ak L
N
f (k ) f (k )
Y
x 0.5(ak bk )
Y
置 ak1 k , bk1 bk , k1 k k1 ak1 0.618 (bk1 ak1) 计算函数值 f (k1)
置 k : k 1
2. 代码及数值算例:
0.618 法计算试探点的公式:
2. 0.618 法的算法步骤:
k ak 0.382(bk ak ), k ak 0.618(bk ak ).
①置初始区间 [a1,b1] 及精度要求 L 0 , 计算试探点 1 和 1 , 计算函数值 f (1) 和
f (1) . 计算公式是
(2) 数值算例:
min f (x)def 2x2 x 1 ,
初始区间[a1,b1] [1,1] , 精度 L 0.16 .
(i) 键入命令: >> [x,k]=GSe('2*x^2-x-1',-1,1,0.16) (ii) 运行结果: x=
0.2229
k=
6
五.总结:
0.618 法(黄金分割法)适用于单峰函数, 故应先确定目标函数的单峰区间, 方可进行迭代 计算. 但单峰区间不是很明显就能确定, 故可用进退法寻找并确定单峰区间.
③ 置 ak1 k , bk1 bk , k1 k , k1 ak1 0.618 (bk1 ak1) , 计 算 函 数 值
f (k1) , 转步骤⑤.
④ 置 ak1 ak , bk1 k , k1 k , k1 ak1 0.382 (bk1 ak1) , 计 算 函 数 值 f (k1) , 转步骤⑤.
如果 f (x(1) ) f (x(2) ) , 则 x [x(1) ,b] ;
如果 f (x(1) ) f (x(2) ) , 则 x [a,据上述定理, 通过取试探点使包含极小点的区间(不确定区 间)不断缩短, 当区间长度小到一定程度时, 区间上各点的函数值均接近极小值, 因此任意 一点都可作为极小点的近似.
f (x(1) ) f (x(2) ) , 则对每一个 x [a, x(1) ] , 有 f (x) f (x(2) ) ; 如果 f (x(1) ) f (x(2) ) ,
则对每一个 x [x(2), b] , 有 f (x) f (x(1) ) .
根据上述定理, 只需选择两个试探点, 就可将包含极小点的区间缩短. 事实上, 必有
⑤置 k : k 1, 返回步骤②.
四.实验流程图及其 MATLAB 实现:
1. 流程图:
开始
置初始区间[a1,b1] 及精度要求 L 0
计算试探点 1 和 1 计算函数值 f (1) 和 f (1)
N
置 ak1 ak , bk1 k , k1 k k1 ak1 0.382 (bk1 ak1) 计算函数值 f (k1)
相关主题