新手,求大佬指正

我的问题:

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相关推荐

  1. 黄金分割法 java实现_python中黄金分割法实现方法

    本文实例讲述了python中黄金分割法实现方法.分享给大家供大家参考.具体实现方法如下: ''' a,b = bracket(f,xStart,h) Finds the brackets (a,b) ...

  2. python写二分法_Python实现二分法和黄金分割法

    运筹学课上,首先介绍了非线性规划算法中的无约束规划算法.二分法和黄金分割法是属于无约束规划算法的一维搜索法中的代表. 二分法:$$x_{1}^{(k+1)}=\frac{1}{2}(x_{R}^{(k ...

  3. python3 列表转字节_Python 3.9!10大新特性值得关注

    选自towardsdatascience 作者:Farhad Malik机器之心编译编辑:陈萍 近日,Python 3.9 发布,并开发了一些新特性,包括字典合并与更新.新的解析器.新的字符串函数等. ...

  4. python dict遍历_python入门

    python:简洁,优雅,快捷 简洁到变量可以不用定义直接用,可以调用很多函数,方便移植,对数据的处理速度快,但是耗内存 我学习python的时候,感觉这就像是在看小学生的作业,当然只是刚学习到了基础 ...

  5. python log函数怎么打_Python的log日志功能及设置方法

    python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客

  6. Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习

    Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...

  7. python判断素数的函数_Python素数prime函数练习_Python源码实操

    Python素数prime函数练习_Python源码实操 素数prime函数练习 1) 写一个函数isprime(x) 判断x是否为素数,如果是素数,返回True,否则返回False def ispr ...

  8. 想学python都要下载什么软件-学编程闲余时间建议下载的软件_Python新手入门教程...

    原标题:学编程闲余时间建议下载的软件_Python新手入门教程 Python新手入门教程_在手机上就能学习编程的软件 很多小伙伴会问:我在学编程,想利用坐地铁坐公交吃饭间隙学编程,在手机上能学编程的软 ...

  9. python语言程序设计基础网课-宜昌2020年_高校邦_Python程序设计基础【实境编程】...

    宜昌2020年_高校邦_Python程序设计基础[实境编程] 垃圾是放错位置的资源.我国能源资源的四个特点是总量丰富,人均拥有量低,资源分布不均衡和开发难度大.可再生能源大规模发展和利用的主要技术障碍 ...

最新文章

  1. CVPR2019|微软、中科大开源基于深度高分辨表示学习的姿态估计算法
  2. 数据仓库及其体系建设
  3. C++两个队列实现一个栈
  4. ActiveMQ与xml rpc
  5. STL中heap算法(堆算法)
  6. 数据战略和风险管理系统
  7. 学习腾讯的产品管理之道
  8. ngrx注入到应用类构造函数里的store变量
  9. 第一次马拉松_成为数据科学家是一场马拉松而不是短跑
  10. 佳能打印机ip90 64位系统的驱动_佳能打印机如何安装 佳能打印机漏墨如何解决【详解】...
  11. linux pcie组raid_大概是市面上带金属 PCIE 装甲和背板中最便宜的一款主板。华擎 Z390 Phantom Gaming X 开箱评测...
  12. 若依后端实现pdfjs预览PDF文件
  13. c语言创造线性表储存复数,《c语言数结构》第02章 线性表.ppt
  14. 替代CATIA查看stp/step格式模型免费软件推荐
  15. 威伦触摸屏入门布局提升题
  16. C#调用PB生成dll详解
  17. gmx solvate命令
  18. 基于xsh的vbs脚本的使用(简介)
  19. Renderdoc调试总结
  20. SQL Server 沿用上一日的数据

热门文章

  1. 解决github :error: failed to push some refs to 问题
  2. Java中的魔法值介绍及解决办法
  3. 微信授权回调时,回调地址中原有参数丢失
  4. 【Unity】Unity中获得碰撞体碰撞的位置
  5. 代价函数、目标函数、损失函数
  6. PIPE接口基本描述
  7. 图像卷积原理及运算方法
  8. 认证 (Authentication) 和授权 (Authorization)
  9. android WebView
  10. MacOS使用conan