黄金分割算法python
时间: 2023-11-14 11:11:01 浏览: 182
黄金分割算法(Golden Section Method)是一种用于单峰函数区间上求极小值的方法。其基本思想是通过去试探点和进行函数值比较,使包含极小点的探索区间不断减小,当区间达到一定的程度时,就得到了函数极小点的近似值。在Python中,可以通过以下示例代码实现黄金分割算法:
```
# 多项式函数
def f(x):
return -x*(350-2*x)*(260 -2*x)
# 黄金分割法求极值
def G(a,b,e):
a1 = b-0.618*(b-a)
a2 = a+0.618*(b-a)
f1,f2 = f(a1),f(a2)
while abs(b-a)>e:
if f1<f2:
b,a2,f2= a2,a1,f1
a1 = b-0.618*(b-a)
f1 = f(a1)
else:
a,a1,f1=a1,a2,f2
a2 = a+0.618*(b-a)
f2 = f(a2)
a = (a+b)/2
print("黄金切割法下的极值点为a* = {:.4f}".format(a))
return a
if __name__ == '__main__':
print("**************输入参数**************")
a,b = map(float,input("请输入区间:").split(' '))
e = eval(input("请输入精度:"))
print("极值f(a*) = {:.4f}".format(f(G(a,b,e))))
print("************************************")
```
在这段代码中,首先定义了一个多项式函数f(x),然后定义了一个G(a,b,e)函数,该函数接受三个参数:区间左端点a、区间右端点b和精度e。在函数中,首先计算出左右试探点a1和a2,以及相应的函数值f1和f2。然后,通过比较f1和f2的大小,不断缩小探索区间,直到区间长度小于精度e,最终得到函数极小点的近似值a*。
阅读全文