黄金分割法_python
新手,求大佬指正
我的问题:
fx=str_fx.replace(“x”,"%(x)f") # 所有的"x"换为"%(x)function"
return eval(fx % {“x”: x}) # 字典类型的格式化字符串,将所有的"x"替换为变量x
怎么理解这段代码????
python-黄金分割法
- 我的问题:
- 程序
- 1.
- 2.
- 3.
- 4.
- 总结
程序
1.
from math import *
import matplotlib.pyplot as plt
from pylab import *
# 通用函数f(x)靠用户录入
def function(x):fx=str_fx.replace("x","%(x)f") # 所有的"x"换为"%(x)function"return eval(fx % {"x": x}) # 字典类型的格式化字符串,将所有的"x"替换为变量x
2.
# 绘图函数:给定闭区间(绘图间隔),绘图间隔默认为0.05,若区间较小,请自行修改
def drawf(a,b,interp=0.05):x = [a+ele*interp for ele in range(0, int((b-a)/interp))]y = [function(ele) for ele in x]# y = [function(x)]plt.figure(1)plt.plot(x, y)xlim(a, b)title(init_str, color="b")plt.show()
3.
# 黄金分割法进行一维搜索的函数
def gold_div_search(a,b,esp):data=list()x1=a+t*(b-a)x2=b-t*(b-a)data.append([a,x1,x2,b])while((b-a)>esp):if function(x1)>function(x2): #如果f(x1)>function(x2),则在区间(x1,b)内搜索a=x1x1=x2x2=b-t*(b-a)plt.plot(x2,function(x2),'r*')elif function(x1)<function(x2): #如果f(x1)<function(x2),则在区间(a,x2)内搜索b,x2=x2,x1x1=a+t*(b-a)plt.plot(x1,function(x1),'r*')else: #如果f(x1)=function(x2),则在区间(x1,x2)内搜索a=x1b=x2x1=a+t*(b-a)x2=b-t*(b-a)plt.plot(x1,function(x1),'r*',x2,function(x2),'r*')data.append([a,x1,x2,b])with open("一维搜索(黄金分割法).txt",mode="w",encoding="utf-8")as a_file:# 保存的txt文件在程序的同目录下for i in range(0,len(data)):a_file.write("%d:\t"%(i+1))for j in range(0,4):a_file.write("function(%.3f)=%.3f\t"%(data[i][j],function(data[i][j])))a_file.write("\n")print("写入文件成功!")return [a,b]
4.
t = 1-(sqrt(5)-1)/2 # 1-rou为黄金分割比
init_str = input("请输入一个函数,默认变量为x:\n") # 输入的最初字符串
para=input("请依次输入一维搜索的区间a,b和最终区间的精确值(用空格分隔)").split() # 导入区间
'''split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串'''
para=[float(ele) for ele in para]
a,b,esp=para
str_fx=init_str.replace("^", "**") # 将所有的“^"替换为python的幂形式"**"
gold_div_search(a,b,esp) # 调用黄金分割法并保存文件
drawf(a,b,(b-a)/2000) # 绘制函数图形
该处使用的url网络请求的数据。
总结
提示:
请输入一个函数,默认变量为x:
x**2-sin(x)
请依次输入一维搜索的区间a,b和最终区间的精确值(用空格分隔)0 1 0.0001(最后也有个空格)
写入文件成功!
结果:
1: function(0.000)=0.000 function(0.382)=-0.227 function(0.618)=-0.197 function(1.000)=0.159
2: function(0.000)=0.000 function(0.236)=-0.178 function(0.382)=-0.227 function(0.618)=-0.197
3: function(0.236)=-0.178 function(0.382)=-0.227 function(0.472)=-0.232 function(0.618)=-0.197
4: function(0.382)=-0.227 function(0.472)=-0.232 function(0.528)=-0.225 function(0.618)=-0.197
5: function(0.382)=-0.227 function(0.438)=-0.232 function(0.472)=-0.232 function(0.528)=-0.225
6: function(0.382)=-0.227 function(0.416)=-0.231 function(0.438)=-0.232 function(0.472)=-0.232
7: function(0.416)=-0.231 function(0.438)=-0.232 function(0.451)=-0.232 function(0.472)=-0.232
8: function(0.438)=-0.232 function(0.451)=-0.232 function(0.459)=-0.232 function(0.472)=-0.232
9: function(0.438)=-0.232 function(0.446)=-0.232 function(0.451)=-0.232 function(0.459)=-0.232
10: function(0.446)=-0.232 function(0.451)=-0.232 function(0.454)=-0.232 function(0.459)=-0.232
11: function(0.446)=-0.232 function(0.449)=-0.232 function(0.451)=-0.232 function(0.454)=-0.232
12: function(0.449)=-0.232 function(0.451)=-0.232 function(0.452)=-0.232 function(0.454)=-0.232
13: function(0.449)=-0.232 function(0.450)=-0.232 function(0.451)=-0.232 function(0.452)=-0.232
14: function(0.449)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232 function(0.451)=-0.232
15: function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232 function(0.451)=-0.232
16: function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232
17: function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232
18: function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232
19: function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232
20: function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232
21: function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232 function(0.450)=-0.232
https://blog.csdn.net/weixin_44044411/article/details/88091024
黄金分割法_python相关推荐
- 黄金分割法 java实现_python中黄金分割法实现方法
本文实例讲述了python中黄金分割法实现方法.分享给大家供大家参考.具体实现方法如下: ''' a,b = bracket(f,xStart,h) Finds the brackets (a,b) ...
- python写二分法_Python实现二分法和黄金分割法
运筹学课上,首先介绍了非线性规划算法中的无约束规划算法.二分法和黄金分割法是属于无约束规划算法的一维搜索法中的代表. 二分法:$$x_{1}^{(k+1)}=\frac{1}{2}(x_{R}^{(k ...
- python3 列表转字节_Python 3.9!10大新特性值得关注
选自towardsdatascience 作者:Farhad Malik机器之心编译编辑:陈萍 近日,Python 3.9 发布,并开发了一些新特性,包括字典合并与更新.新的解析器.新的字符串函数等. ...
- python dict遍历_python入门
python:简洁,优雅,快捷 简洁到变量可以不用定义直接用,可以调用很多函数,方便移植,对数据的处理速度快,但是耗内存 我学习python的时候,感觉这就像是在看小学生的作业,当然只是刚学习到了基础 ...
- python log函数怎么打_Python的log日志功能及设置方法
python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客
- Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习
Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...
- python判断素数的函数_Python素数prime函数练习_Python源码实操
Python素数prime函数练习_Python源码实操 素数prime函数练习 1) 写一个函数isprime(x) 判断x是否为素数,如果是素数,返回True,否则返回False def ispr ...
- 想学python都要下载什么软件-学编程闲余时间建议下载的软件_Python新手入门教程...
原标题:学编程闲余时间建议下载的软件_Python新手入门教程 Python新手入门教程_在手机上就能学习编程的软件 很多小伙伴会问:我在学编程,想利用坐地铁坐公交吃饭间隙学编程,在手机上能学编程的软 ...
- python语言程序设计基础网课-宜昌2020年_高校邦_Python程序设计基础【实境编程】...
宜昌2020年_高校邦_Python程序设计基础[实境编程] 垃圾是放错位置的资源.我国能源资源的四个特点是总量丰富,人均拥有量低,资源分布不均衡和开发难度大.可再生能源大规模发展和利用的主要技术障碍 ...
最新文章
- CVPR2019|微软、中科大开源基于深度高分辨表示学习的姿态估计算法
- 数据仓库及其体系建设
- C++两个队列实现一个栈
- ActiveMQ与xml rpc
- STL中heap算法(堆算法)
- 数据战略和风险管理系统
- 学习腾讯的产品管理之道
- ngrx注入到应用类构造函数里的store变量
- 第一次马拉松_成为数据科学家是一场马拉松而不是短跑
- 佳能打印机ip90 64位系统的驱动_佳能打印机如何安装 佳能打印机漏墨如何解决【详解】...
- linux pcie组raid_大概是市面上带金属 PCIE 装甲和背板中最便宜的一款主板。华擎 Z390 Phantom Gaming X 开箱评测...
- 若依后端实现pdfjs预览PDF文件
- c语言创造线性表储存复数,《c语言数结构》第02章 线性表.ppt
- 替代CATIA查看stp/step格式模型免费软件推荐
- 威伦触摸屏入门布局提升题
- C#调用PB生成dll详解
- gmx solvate命令
- 基于xsh的vbs脚本的使用(简介)
- Renderdoc调试总结
- SQL Server 沿用上一日的数据