黄金分割法的python算法带迭代次数
时间: 2023-07-25 10:44:56 浏览: 95
python中黄金分割法实现方法
黄金分割法(Golden Section Search)是一种优化算法,用于在一个区间内寻找一个函数的最小值。其基本思想是将区间按照黄金分割比例分成两部分,然后选择一个部分继续迭代,直到满足一定的终止条件。下面是一个使用黄金分割法寻找函数最小值的Python算法,带有迭代次数限制:
```python
import math
def golden_section_search(f, a, b, tol=1e-6, max_iter=100):
phi = (1 + math.sqrt(5)) / 2 # 黄金分割比例
c = b - (b - a) / phi # 计算内部点c
d = a + (b - a) / phi # 计算内部点d
fc, fd = f(c), f(d) # 计算函数值
for i in range(max_iter):
if fc < fd:
b, d, fd = d, c, fc
c = b - (b - a) / phi
fc = f(c)
else:
a, c, fc = c, d, fd
d = a + (b - a) / phi
fd = f(d)
if abs(b - a) < tol:
break
return (a + b) / 2, i+1 # 返回区间中点和迭代次数
# 使用示例:寻找函数sin(x)在区间[0, pi]中的最小值
f = lambda x: math.sin(x)
a, b = 0, math.pi
x_min, num_iter = golden_section_search(f, a, b, tol=1e-6, max_iter=100)
print("最小值点:", x_min)
print("迭代次数:", num_iter)
```
其中,`f`是要寻找最小值的函数,`a`和`b`是搜索区间的左右端点,`tol`是迭代精度,`max_iter`是最大迭代次数。函数返回找到的最小值点和实际迭代次数。
阅读全文