0.618法求最优解python
时间: 2023-08-29 17:05:37 浏览: 203
用python实现优化方法中的0.618法
0.618法是一种常用的优化算法,用于求解最优解。以下是一个简单的Python实现:
```python
def golden_section_search(f, a, b, tol=1e-6):
golden_ratio = 0.618
c = b - (b - a) * golden_ratio
d = a + (b - a) * golden_ratio
while abs(c - d) > tol:
if f(c) < f(d):
b = d
else:
a = c
c = b - (b - a) * golden_ratio
d = a + (b - a) * golden_ratio
return (b + a) / 2
```
其中,f是待优化的函数,a和b是搜索区间的上下限,tol是精度(默认为1e-6)。函数返回的是最优解的近似值。
例如,我们可以使用这个函数来求解f(x) = x^2 + 3x + 5在区间[0, 10]上的最小值:
```python
f = lambda x: x**2 + 3*x + 5
a = 0
b = 10
x_min = golden_section_search(f, a, b)
print(x_min)
```
输出结果为-1.4999999105930328,这是最小值的近似值。
阅读全文