Python实现黄金分割法求解极值示例
本文介绍使用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黄金分割法相关内容,欢迎查阅本站过往文章或继续浏览后续内容,感谢支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













