
确定单峰函数的极小点所在的区间
发布日期:2021-05-07 14:37:55
浏览次数:29
分类:原创文章
本文共 1407 字,大约阅读时间需要 4 分钟。
确定函数的在区间
的极小点,要求极小点所在的区间的长度压缩到0.3之内。
目标函数为一元单值函数,该问题即为一维问题,可用一维搜索法进行迭代求解,下面用MATLAB实现黄金分割法、斐波那契数列法和二分法的求解。
1、黄金分割法,程序代码如下:
fx=@(x)x^4-14*x^3+60*x^2-70*x;a0=0;b0=2; %搜索区间d=0.3; %要求区间长度p=(3-sqrt(5))/2;N=0; %初始化迭代次数while abs(b0-a0)>d a=a0+p*(b0-a0); b=a0+(1-p)*(b0-a0); %(1-p)为压缩比 fa=fx(a); fb=fx(b); if fa<fb %压缩搜索区间 b0=b; else a0=a; end N=N+1; %迭代次数+1end
该方法迭代4次,即可找到满足要求的极小点所在的区间,为 。
2、斐波那契数列法,程序代码如下:
fx=@(x)x^4-14*x^3+60*x^2-70*x;a0=0;b0=2;Fk_2=0;Fk_1=1; %生成斐波那契数列e=0.1;d=0.3for i=1:10 Fk(i)=Fk_1+Fk_2; Fk_2=Fk_1; Fk_1=Fk(i);endm=find(((1+2*e)./Fk)<(d/2));N=min(m);%压缩比for i=N:-1:2 p(i-1)=Fk(i-1)/Fk(i);endp=fliplr(p); %按索引倒序排列%搜索a=a0+(1-p(1))*(b0-a0); b=a0+p(1)*(b0-a0);fa=fx(a);fb=fx(b);for i=2:length(p) if p(i)==0.5 p(i)=p(i)-e; end if fa<fb b0=b; b=a; a=a0+(1-p(i))*(b0-a0); fb=fa; fa=fx(a); else a0=a; a=b; b=a0+p(i)*(b0-a0); fa=fb; fb=fx(b); endend
在令的情况下,迭代4次,即可得到满足要求的搜索区间,为
。
3、二分法,程序代码如下:
fx=@(x) 4*x^3 - 42*x^2 + 120*x - 70;a0=0;b0=2;d=0.3; %要求区间长度N=0;while abs(b0-a0)>d x0=(a0+b0)/2; fx0=fx(x0); if fx0>0 %压缩搜索区间 b0=x0; else a0=x0; end N=N+1;end
该方法迭代2次即可得到满足要求的搜索区间,为 。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月12日 02时03分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
uni-app请求头中携带token
2019-03-04
常用的 Git 命令和小技巧(1)
2019-03-04
vue中接收后台的图片验证码并显示
2019-03-04
springboot入门(1)---整合MyBatis
2019-03-04
Vue入门学习笔记(1)
2019-03-04
趣谈win10常用快捷键
2019-03-04
数学建模(NO.18灰色预测)
2019-03-04
数学建模更新12(数学线性规划模型1)
2019-03-04
Android,SharedPreferences的使用
2019-03-04
JPEG压缩技术
2019-03-04
两款用于检测内存泄漏的软件
2019-03-04
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
2019-03-04
准确率94%!Python 机器学习识别微博或推特机器人
2019-03-05
Android基本知识
2019-03-05
在Java中,return null 是否安全, 为什么?
2019-03-05
命令模式【Command Pattern】
2019-03-05
OSI 7 层网络模型
2019-03-05