返回
一维搜索算法:点搜索
点搜索算法是一类利用目标函数导数信息在一维空间中寻找函数极小值点的高效数值方法。
这类方法通过迭代更新当前点,逐步逼近最优解,广泛应用于优化问题、机器学习、工程计算等领域。
常见的点搜索算法包括梯度下降法、牛顿法和割线法,它们分别基于一阶导数、二阶导数或差分近似来构造迭代公式。
梯度下降法是最基础的一阶优化方法,通过沿目标函数负梯度方向更新当前点,逐步逼近极小值点。其步长由学习率 α
控制,适用于大规模优化问题。
计算过程
输入:目标函数 \( f \),初始点 \( x_0 \),学习率 \( \alpha \),最大迭代次数 \( N \)
输出:近似极小值点 \( x \)
算法步骤:
- 令 \( k = 0 \)
- 计算当前点的导数 \( f'(x_k) \)
- 若 \( k = N \),输出 \( x = x_k \),算法结束
- 更新迭代点:
- \( x_{k+1} = x_k - \alpha \cdot f'(x_k) \)
- 令 \( k = k + 1 \),转步骤 2
牛顿法是一种二阶优化方法,利用目标函数的一阶和二阶导数信息构造迭代公式,收敛速度较快,但需计算二阶导数,且对初始点选择敏感。
计算过程
输入:目标函数 \( f \),初始点 \( x_0 \),最大迭代次数 \( N \)
输出:近似极小值点 \( x \)
算法步骤:
- 令 \( k = 0 \)
- 计算当前点的一阶导数 \( f'(x_k) \) 和二阶导数 \( f''(x_k) \)
- 若 \( k = N \),输出 \( x = x_k \),算法结束
- 更新迭代点:
- \( x_{k+1} = x_k - \frac{f'(x_k)}{f''(x_k)} \)
- 令 \( k = k + 1 \),转步骤 2
割线法是一种拟牛顿方法,通过差分近似替代二阶导数,避免直接计算二阶导,适用于二阶导数难以获取的情况。
其迭代公式由相邻点的导数差分构造。
计算过程
输入:目标函数 \( f \),初始点 \( x_0 \)、\( x_{-1} \),最大迭代次数 \( N \)
输出:近似极小值点 \( x \)
算法步骤:
- 令 \( k = 0 \)
- 计算当前点及前一点的导数 \( f'(x_k) \) 和 \( f'(x_{k-1}) \)
- 若 \( k = N \),输出 \( x = x_k \),算法结束
- 更新迭代点:
- \( x_{k+1} = x_k - \frac{(x_k - x_{k-1}) \cdot f'(x_k)}{f'(x_k) - f'(x_{k-1})} \)
- 令 \( k = k + 1 \),转步骤 2