python中黄金分割法实现方法


Posted in Python onMay 06, 2015

本文实例讲述了python中黄金分割法实现方法。分享给大家供大家参考。具体实现方法如下:

''' a,b = bracket(f,xStart,h)
  Finds the brackets (a,b) of a minimum point of the
  user-supplied scalar function f(x).
  The search starts downhill from xStart with a step
  length h.
  x,fMin = search(f,a,b,tol=1.0e-6)
  Golden section method for determining x that minimizes
  the user-supplied scalar function f(x).
  The minimum must be bracketed in (a,b).
'''    
from math import log, ceil
def bracket(f,x1,h):
  c = 1.618033989 
  f1 = f(x1)
  x2 = x1 + h; f2 = f(x2)
 # Determine downhill direction and change sign of h if needed
  if f2 > f1:
    h = -h
    x2 = x1 + h; f2 = f(x2)
   # Check if minimum between x1 - h and x1 + h
    if f2 > f1: return x2,x1 - h 
 # Search loop
  for i in range (100):  
    h = c*h
    x3 = x2 + h; f3 = f(x3)
    if f3 > f2: return x1,x3
    x1 = x2; x2 = x3
    f1 = f2; f2 = f3
  print "Bracket did not find a mimimum"    
def search(f,a,b,tol=1.0e-9):
  nIter = int(ceil(-2.078087*log(tol/abs(b-a)))) # Eq. (10.4)
  R = 0.618033989
  C = 1.0 - R
 # First telescoping
  x1 = R*a + C*b; x2 = C*a + R*b
  f1 = f(x1); f2 = f(x2)
 # Main loop
  for i in range(nIter):
    if f1 > f2:
      a = x1
      x1 = x2; f1 = f2
      x2 = C*a + R*b; f2 = f(x2)
    else:
      b = x2
      x2 = x1; f2 = f1
      x1 = R*a + C*b; f1 = f(x1)
  if f1 < f2: return x1,f1
  else: return x2,f2

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python语言编写电脑时间自动同步小工具
Mar 08 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
numpy和pandas中数组的合并、拉直和重塑实例
Jun 28 Python
Python跳出多重循环的方法示例
Jul 03 Python
Python如何筛选序列中的元素的方法实现
Jul 15 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
通过实例解析python创建进程常用方法
Jun 19 Python
Python Pillow(PIL)库的用法详解
Sep 19 Python
python模拟点击在ios中实现的实例讲解
Nov 26 Python
使用rpclib进行Python网络编程时的注释问题
May 06 #Python
pymongo给mongodb创建索引的简单实现方法
May 06 #Python
Python中用PIL库批量给图片加上序号的教程
May 06 #Python
python写入中英文字符串到文件的方法
May 06 #Python
python使用xlrd模块读写Excel文件的方法
May 06 #Python
在Python中使用全局日志时需要注意的问题
May 06 #Python
python通过post提交数据的方法
May 06 #Python
You might like
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
js计算精度问题小结
2013/04/22 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
Python中endswith()函数的基本使用
2015/04/07 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
高性能装备提升营地:Kammok
2019/02/27 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
销售人员工作自我评价
2014/09/21 职场文书
十七岁的单车观后感
2015/06/12 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
mysqldump进行数据备份详解
2022/07/15 MySQL