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基础教程之面向对象的一些概念
Aug 29 Python
Python魔术方法详解
Feb 14 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
python assert的用处示例详解
Apr 01 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
python lambda的使用详解
Feb 26 Python
如何利用pygame实现打飞机小游戏
May 30 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
常用的js方法合集
2017/03/10 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
js回调函数仿360开机
2019/12/26 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
python中引用与复制用法实例分析
2015/06/04 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python内置函数locals和globals对比
2020/04/28 Python
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
银行开业庆典方案
2014/02/06 职场文书
企业环保标语
2014/06/10 职场文书
法定代表人资格证明书
2014/09/11 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
任命通知范文
2015/04/21 职场文书
奖学金申请书(范文)
2019/08/14 职场文书