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爬虫之打包生成exe文件
Nov 06 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
简单实现Python爬取网络图片
Apr 01 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
一文详述 Python 中的 property 语法
Sep 01 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
python单例模式的应用场景实例讲解
Feb 24 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP 中文处理技巧
2010/04/25 PHP
php 字符串替换的方法
2012/01/10 PHP
php实现三级级联下拉框
2016/04/17 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
python 判断一个进程是否存在
2009/04/09 Python
Python统计单词出现的次数
2018/04/04 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
Python猜数字算法题详解
2020/03/01 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
土木工程专业个人求职信
2013/12/30 职场文书
小学信息技术教学反思
2014/02/10 职场文书
技术合作协议书范本
2014/04/18 职场文书
法人身份证明书
2015/06/18 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python