近似黄金分割法代码
时间: 2023-07-02 13:18:47 浏览: 112
以下是一个使用近似黄金分割法求解一元函数极小值的 Python 代码示例:
```python
import math
def golden_section_search(f, a, b, eps=1e-6):
"""使用近似黄金分割法寻找函数 f 在区间 [a, b] 上的极小值点"""
phi = (math.sqrt(5) - 1) / 2 # 黄金分割比例
x1 = a + (1 - phi) * (b - a)
x2 = a + phi * (b - a)
while abs(b - a) > eps:
if f(x1) < f(x2):
b = x2
x2 = x1
x1 = a + (1 - phi) * (b - a)
else:
a = x1
x1 = x2
x2 = a + phi * (b - a)
return (a + b) / 2
# 示例:求解函数 x^3 - 2x^2 + 1 在区间 [0, 2] 上的极小值点
f = lambda x: x**3 - 2 * x**2 + 1
x_min = golden_section_search(f, 0, 2)
print("极小值点 x = {:.6f}, f(x) = {:.6f}".format(x_min, f(x_min)))
```
在该示例中,我们定义了一个名为 `golden_section_search` 的函数,该函数接受一个函数 `f`,以及区间 `[a, b]` 和精度 `eps` 作为输入,返回函数 `f` 在该区间内的极小值点。在函数内部,我们使用了近似黄金分割法来逐步缩小区间并寻找极小值点。在示例中,我们使用该函数来求解函数 $f(x) = x^3 - 2x^2 + 1$ 在区间 $[0, 2]$ 上的极小值点。
阅读全文