黄金分割法(又称 0.618 法)是求单峰函数极值的一种试探法,所谓单峰函数是指只有一个峰值(局部极小值也是全局极小值,或者说只有唯一的局部极小值)的函数,其严格定义为:

定义:设 f(x)f(x) 是定义在 [a,b][a, b] 上的函数,若:

  • (1)存在 x⋆∈[a,b]x^{\star}\in [a, b] 使 minx∈{a,b}f(x)=f(x⋆)\min_{x\in\{a,b\}}f(x)=f(x^\star)
  • (2)对任意的 a≤x1<x2≤ba\leq x_1,当 x2≤x⋆x_2\leq x^{\star} 时,f(x1)>f(x2)f(x_1)>f(x_2);当 x1≥x⋆x_1\geq x^\star 时,f(x1)≤f(x2)f(x_1)\leq f(x_2)

则称 f(x)f(x) 为 [a,b][a, b] 上的单峰函数。

搜索区间收缩原则

  • “去坏留好”原则

    含义较为简单,不再赘述。

  • 对称原则

    x1−a=b−x2x2=a+b−x1

    x_1-a=b-x_2\\x_2=a+b-x_1

  • 等比原则

    x2=a+w(b−a)x1=a+w2(b−a)

    x_2=a+w(b-a)\\x_1=a+w^2(b-a)\\

    又根据对称原则:x1−a=b−x2x_1-a=b-x_2,最终可得,

    w2=1−w

    w^2=1-w

简单举例,

求 y=x2y=x^2 (显然为单峰函数)在[-1, 1]上的最小值;

def golden_split(f, a, b):x1 = a + 0.332*(b-a)x2 = a + b - x1while abs(x1 - x2) < 1e-5:R, G = f(x1), f(x2)if R > G:b = x2x2 = x1x1 = a + b - x2else:a = x1x1 = x2x2 = a + b - x1return (a + b)/2print(golden_split(lambda x: x^2), -1, 1))

黄金分割法与单峰函数求极值相关推荐

  1. c语言黄金分割法求最小值,黄金分割法求极值(c编程)

    <黄金分割法求极值(c编程)>由会员分享,可在线阅读,更多相关<黄金分割法求极值(c编程)(3页珍藏版)>请在人人文库网上搜索. 1.流程图:b=a+i*h; i+f(a),f ...

  2. python求最值_用Python实现最速下降法求极值的方法

    对于一个多元函数 ,用最速下降法(又称梯度下降法)求其极小值的迭代格式为 其中 为负梯度方向,即最速下降方向,αkαk为搜索步长. 一般情况下,最优步长αkαk的确定要用到线性搜索技术,比如精确线性搜 ...

  3. hihoCoder #1142 : 三分求极值

    #1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...

  4. 用Python实现最速下降法求极值

    原文:https://blog.csdn.net/u012705410/article/details/47254437 用Python实现最速下降法求极值 对于一个多元函数f(x)=f(x1,x2, ...

  5. 算法题目——二次函数三分求极值(HDU-3714)

    题目链接:HDU-3714 题目描述: 对于N个二次函数,求每个二次函数的最小值中的最大值 思路: 使用三分法求极值(递归调用) 对于这种在指定区间里只有一个极值点的函数(凸函数凹函数都可以),我们可 ...

  6. matlab求曲线极值程序,matlab函数求极值matlab函数求极值.ppt

    matlab函数求极值matlab函数求极值 * * 函数的极值 1.一元函数的极值 函数命令:fminbnd 调用格式:[x,feval,exitflag,output]=fminbnd(fun,x ...

  7. matlab 局部极值点,matlab 图像局部求极值

    求极值的具体语句: 极值: data是你的数据, find(diff(sign(diff(data)))==-2)+1 找到极大值的位置 find(diff(sign(diff(data)))==2) ...

  8. 最优化方法:非线性方程的求极值方法

    http://blog.csdn.net/pipisorry/article/details/23553263 本文主要讲解 数值分析:非线性方程的求根方法,但是等价于最优化方法:非线性方程的求极值方 ...

  9. python迭代法求极值_用Python实现最速下降法求极值的方法

    对于一个多元函数 ,用最速下降法(又称梯度下降法)求其极小值的迭代格式为 其中 为负梯度方向,即最速下降方向,αkαk为搜索步长. 一般情况下,最优步长αkαk的确定要用到线性搜索技术,比如精确线性搜 ...

最新文章

  1. GitHub上YOLOv5开源代码的训练数据定义
  2. System.Timers.Timer的Enable、Start、Stop记录
  3. 无线网***工具进攻方法及防范技巧
  4. 关闭系统进程,以及如何调用cmd并执行命令
  5. Maven--反应堆(Reactor)
  6. 补习系列(15)-springboot 分布式会话原理
  7. codeforces379a Alyona and mex
  8. android SDL系列讲解(十三) 播放音乐库 SDL_mixer教程
  9. 测试用例-----遥控器
  10. 浪潮信息m6服务器性能,展现强劲性能,浪潮M6服务器为什么能刷新SPEC多项记录...
  11. 几本关于用户体验的书籍
  12. 【猪八戒】- 2017年在线笔试“叠字问题”
  13. 什么是论坛域名?论坛域名适用在哪些地方?
  14. 2021-6-7-今日收获
  15. Word2016 显示批注
  16. 正大国际期货:做期货主帐户有什么风险?
  17. oracle 19c dbua升级时ORA-20001报错的分析
  18. 正大国际琪貨召主涨户:股指期货套期保值交易可分为哪几类
  19. 2. 高光谱成像技术
  20. 组播路由协议——PIM基本概念

热门文章

  1. Hadoop不同版本数据传输distcp问题设置
  2. spark-dataframe与rdd的区别
  3. Spark-Serialization序列化的2种方式解释对比使用场景
  4. 剑指offer面试题58 - I. 翻转单词顺序(双指针)
  5. debian开机打开浏览器_使自動起動! 我学到了!原来“文件”可以跟“应用程序”一样,都能设置开机自启!!...
  6. 【Linux】 JDK安装及配置 (linux-tar.gz版)
  7. sonar扫描android项目配置 mac版
  8. 小程序-picker之key-value形式
  9. 验证码 随机生成器 详解
  10. android BaseAdapter优化