黄金分割法与单峰函数求极值
2016-05-28 11:16
477 查看
黄金分割法(又称 0.618 法)是求单峰函数极值的一种试探法,所谓单峰函数是指只有一个峰值(局部极小值也是全局极小值,或者说只有唯一的局部极小值)的函数,其严格定义为:
定义:设 f(x) 是定义在 [a,b] 上的函数,若:
(1)存在 x⋆∈[a,b] 使 minx∈{a,b}f(x)=f(x⋆)
(2)对任意的 a≤x1<x2≤b,当 x2≤x⋆ 时,f(x1)>f(x2);当 x1≥x⋆ 时,f(x1)≤f(x2)
则称 f(x) 为 [a,b] 上的单峰函数。
含义较为简单,不再赘述。
对称原则
x1−a=b−x2x2=a+b−x1
等比原则
x2=a+w(b−a)x1=a+w2(b−a)
又根据对称原则:x1−a=b−x2,最终可得,
w2=1−w
定义:设 f(x) 是定义在 [a,b] 上的函数,若:
(1)存在 x⋆∈[a,b] 使 minx∈{a,b}f(x)=f(x⋆)
(2)对任意的 a≤x1<x2≤b,当 x2≤x⋆ 时,f(x1)>f(x2);当 x1≥x⋆ 时,f(x1)≤f(x2)
则称 f(x) 为 [a,b] 上的单峰函数。
搜索区间收缩原则
“去坏留好”原则含义较为简单,不再赘述。
对称原则
x1−a=b−x2x2=a+b−x1
等比原则
x2=a+w(b−a)x1=a+w2(b−a)
又根据对称原则:x1−a=b−x2,最终可得,
w2=1−w
简单举例,
求 y=x2 (显然为单峰函数)在[-1, 1]上的最小值;def golden_split(f, a, b): x1 = a + 0.332*(b-a) x2 = a + b - x1 while abs(x1 - x2) < 1e-5: R, G = f(x1), f(x2) if R > G: b = x2 x2 = x1 x1 = a + b - x2 else: a = x1 x1 = x2 x2 = a + b - x1 return (a + b)/2 print(golden_split(lambda x: x^2), -1, 1))
相关文章推荐
- acm 3 1017 背包问题
- An exception occurred while acquiring a poolable resource. Will retry.
- Android音频开发(3):如何播放一帧音频
- 解决虚拟机打不开的问题
- errno 错误码
- hbases索引技术:Lily HBase Indexer介绍
- java堆和栈区别
- 动态网络拓扑演变:局部动态到全局的相变|TopologicalEvolutionofDynamicalNetworks: Global Criticality from Local Dynamics
- 在单链表中删除倒数第k个节点(java实现)
- 判断两条线段是否相交
- 基础总结--Activity的四种launchMode
- 用Cookie实现web网站您浏览过其他的商品
- 两个已经有序的表的并集
- JSP编程--基本语法
- 华为MSTP负载均衡配置示例
- 哈理工OJ 1192 追逐(贪心算法)
- 第十四周实践项目1————排序函数模板
- nginx启动脚本和配置文件
- 人生若只如初见
- 2016春季练习——树状数组