确定单峰区间Matlab,0618法matlab实验报告.doc

实 验 报 告

实验题目: 0.618法的MATLAB实现

学生姓名:

学 号:

实验时间:

实验名称: 0.618法求解单峰函数极小点

实验目的及要求:

1. 了解并熟悉0.618法的方法原理, 以及它的MATLAB实现.

2. 运用0.618法解单峰函数的极小点.

实验内容:

0.618法方法原理:

定理: 设是区间上的单峰函数, , 且. 如果, 则对每一个, 有; 如果,

则对每一个, 有.

根据上述定理, 只需选择两个试探点, 就可将包含极小点的区间缩短. 事实上, 必有

如果, 则;

如果, 则.

0.618 法的基本思想是, 根据上述定理, 通过取试探点使包含极小点的区间(不确定区间)不断缩短, 当区间长度小到一定程度时, 区间上各点的函数值均接近极小值, 因此任意一点都可作为极小点的近似.

0.618 法计算试探点的公式:

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)

x=0.5*(b+a);break;

end

end

数值算例:

,

初始区间, 精度.

(i) 键入命令:

>> [x,k]=GSe('2*x^2-x-1',-1,1,0.16)

(ii) 运行结果:

x =

0.2229

k =

6

总结:

0.618法(黄金分割法)适用于单峰函数, 故应先确定目标函数的单峰区间, 方可进行迭代计算. 但单峰区间不是很明显就能确定, 故可用进退法寻找并确定单峰区间.

开始

置初始区间及精度要求

计算试探点和

计算函数值和

Y

N

Y

N

置, ,

计算函数值

置, ,

计算函数值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值