python中黄金分割法实现方法
作者:songguo 发布时间:2022-05-15 01:45:24
标签:python,黄金分割法
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- 1、首先计算MD5加密的二进制数组(128位),然后再对这个二进制数组进行base64编码(而不是对32位字符串编码)。例如,用Python
- 项目整体布局创建并进入项目文件夹:$ mkdir flask-tutorial$ cd flask-tutorial接下来按照 安装简介 设
- 一、Ajax简介Ajax被认为是(Asynchronous JavaScript and XML)的缩写,允许浏览器与服务器通信而无需刷新当
- 如果一些应用需要到中文字体(如果pygraphviz,不安装中文字体,中文会显示乱码),就要在image 中安装中文字体。默认 python
- 具体代码如下所示:import smtplib, email, os, timefrom email.mime.multipart impo
- 今天我想试试能不能用数组来实现矩阵转置呢?想知道,那就接着往下看吧。希望大家读完有所收获,那我辛苦码字也就值了。一、常见二维数组操作🌴创建与
- 中间件是什么?中间件是类似flask函数中钩子函数的东西。可以在请求视图函数前,或者视图函数响应后处理某些事情。中间件对全部视图都有效!中间
- 小试牛刀:1.需要python如何读取文件2.需要python操作list3.需要使用split()对字符串进行分割代码运行截图 :代码(c
- Javascript脚本实现静态网页加密,阅读Javascript脚本实现静态网页加密,前两天看见有人问静态网页加密问题,就写了这个代码思路
- 一、上传表单的HTML代码 <form action="UpLoad.php" method="post
- 一、先来看看效果接口请求返回的数据:二、官方登录流程图三、小程序登录流程梳理:1、小程序端调用wx.login2、判断用户是否授权3、小程序
- 背景最近本菜鸡在学习 python GUI,从 tkinter 入门,想先做个小软件练习一下思来想去,决定做一个 计算器设计思路首先,导入我
- 问题:开发中常使用Navicat查询数据库,并修改数据库中的值。今天发现查询结果为只读,不能修改。一般连表查不能修改我是知道的,但是单表查居
- 一、触发器的介绍触发器是与表有关的数据库对象,指在insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集
- 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456from fun
- 经常用mysql的人可能会遇到下面几种情况:1、我字段类型是not null,为什么我可以插入空值2、为什么not null的效率比null
- 在做实验时,我们常常会使用用开源的数据集进行测试。而Pytorch中内置了许多数据集,这些数据集我们常常使用DataLoader类进行加载。
- 安装正常情况,只需pip install PIL==1.1.7或者pip install Pillow==2.9.0即可。但需留意安装后的输
- 主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join
- 手动安装Anaconda环境变量安装 Anaconda后,在命令行执行python命令或conda命令会报错无法找到此时就需要我们手动添加环