黄金分割法求一维函数的极值
### 黄金分割法的基本概念黄金分割法是一种用于求解一维优化问题(特别是寻找函数极值)的方法。其基本思想是通过在给定区间内选择特定的点来逐步缩小搜索范围,最终定位到函数的极值(最大值或最小值)点。
#### 黄金分割比
黄金分割法使用的比例称为黄金分割比,约为 \( \phi = \frac{\sqrt{5}-1}{2} \approx 0.618 \)。这个比例具有优良的数学性质,可以有效地减小搜索区间。
### 实施步骤
1. **初始化区间**:
选择一个包含极值的区间 \(\),并设置一个容忍度(或精度)值 \(tol\),用于判断何时停止搜索。
2. **计算分割点**:
计算两个点 \(x_1\) 和 \(x_2\):
- \( x_1 = b - \phi \cdot (b - a) \)
- \( x_2 = a + \phi \cdot (b - a) \)
这些点按照黄金分割比例将整个区间分为两部分。
3. **评估函数值**:
计算这两个分割点的函数值:
- \( f_1 = f(x_1) \)
- \( f_2 = f(x_2) \)
4. **缩小区间**:
根据函数值的比较来决定缩小哪个部分的区间:
- 如果 \( f_1 < f_2 \),则在 \(x_2\) 右侧的区间不可能包含最小值,将右端点更新为 \(b = x_2\)。
- 如果 \( f_1 \geq f_2 \),则在 \(x_1\) 左侧的区间不可能包含最小值,将左端点更新为 \(a = x_1\)。
5. **迭代**:
重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。
6. **输出结果**:
最后,计算区间中点 \((a + b)/2\) 作为极值点,并返回这个点的函数值。
### 具体示例
假设我们想要找到函数 \(f(x) = (x - 2)^2\) 在区间 \(\) 内的最小值。实施步骤如下:
1. **初始化**:
- 区间 \(\)
- 容忍度 \(tol = 1 \times 10^{-5}\)
2. **计算分割点**:
- 计算 \(x_1\) 和 \(x_2\)
3. **评估函数值**:
- 计算 \(f(x_1)\) 和 \(f(x_2)\)
4. **缩小区间**:
- 根据比较结果更新 \(a\) 和 \(b\)
5. **迭代**:
- 循环直到 \(b - a < tol\)
6. **输出**:
- 找到极小值点和最小值。
### 优势与局限
**优势**:
- 收敛速度较快,特别适合于平滑函数。
- 简单易实施,对于不需要求导的函数也有效。
**局限**:
- 只能用于一维问题,对于多维问题不适用。
- 在函数已有许多极值的情况下可能找不到全局极值。
### 结论
黄金分割法是一种高效且简单的优化方法,适用于求解一维函数的极值问题。通过迭代缩小搜索区间,能够逐步接近目标收益,并实现优化。
页:
[1]