python实现黄金分割法的示例代码


Posted in Python onApril 28, 2021

一.问题

python实现黄金分割法的示例代码

使用黄金分割法来计算

二.代码

#黄金分割法python求解PPT上第一个例题
#因为函数要求解最大值而这个方法一般求解最小值所以把函数取负

import numpy as np
import matplotlib.pyplot as plt

rate = 0.618034

def f(x):
    #求解体积函数公式,乘1.0将结果变为浮点数
    return -1.0*x*(350-2*x)*(260-2*x)  

def tarceback(f,a0,b0,accuracy):
    a = a0
    b = b0
    x2 = a+rate*(b-a)
    x1 = b-rate*(b-a)
    f1 = f(x1)
    f2 = f(x2)
    print(x1,x2)
    arr = search(f,a,b,x1,x2,f1,f2,accuracy)
    printFunc(f,a,b,arr[0],arr[1])
    
def search(f,a,b,x1,x2,f1,f2,accuracy):
    if f1<=f2:
        if x2-a<accuracy:
            print(x1,f1)
            return (x1,f1)
        else:
            b = x2
            x2 = x1
            f2 = f1
            x1 = a+b-x2
            f1 = f(x1)
            print(x1,x2)
            return search(f,a,b,x1,x2,f1,f2,accuracy)
    else:
        if b-x1<accuracy:
            print(x2,f2)
            return (x2,f2)
        else:
            a = x1
            x1 = x2
            f1 = f2
            x2 = a+b-x1
            f2 = f(x2)
            print(x1,x2)
            return search(f,a,b,x1,x2,f1,f2,accuracy)

def printFunc(f,a,b,x,y):
    t = np.arange(a,b,0.01)
    s = f(t)
    plt.plot(t,s)
    plt.plot([x],[y],'ro')
    plt.plot([x,x],[y,0],'k--')
    plt.plot([0,x],[y,y],'k--')
#     plt.annotate(r'$(x,y)$',xy=(x,y))
    plt.show()

tarceback(f,0,130,0.05)

三.结果

python实现黄金分割法的示例代码

到此这篇关于python实现黄金分割法的示例代码的文章就介绍到这了,更多相关python 黄金分割法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python基于twisted实现简单的web服务器
Sep 29 Python
python Pygame的具体使用讲解
Nov 03 Python
运行django项目指定IP和端口的方法
May 14 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 Python
Python BS4库的安装与使用详解
Aug 08 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
python 安装impala包步骤
Mar 28 Python
python3中sys.argv的实例用法
Apr 24 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
如何写python的配置文件
Jun 07 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
python搜索算法原理及实例讲解
Nov 18 Python
Python 流媒体播放器的实现(基于VLC)
tensorflow+k-means聚类简单实现猫狗图像分类的方法
python实现三阶魔方还原的示例代码
python基于opencv批量生成验证码的示例
python基于tkinter制作下班倒计时工具
Apr 28 #Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
k-means & DBSCAN 总结
You might like
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
Zend公司全球首推PHP认证
2006/10/09 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
JavaScript 继承详解(四)
2009/07/13 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
npm全局环境变量配置详解
2020/12/15 Javascript
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python实现批量图片格式转换
2020/06/16 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
python 如何将office文件转换为PDF
2020/09/22 Python
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
公司管理建议书范文
2014/03/12 职场文书
广播节目策划方案
2014/05/23 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python