python实现黄金分割法的示例代码
更新时间:2021年04月28日 14:38:27 作者:jtwty
这篇文章主要介绍了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+Django实现简单HelloWord网页的示例代码
本文主要介绍了Python+Django实现简单HelloWord网页的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-04-04
最新评论