核心概述

在闭区间上对单峰实函数进行导数无关的一维极值搜索,按黄金比例复用内部点以单调收缩区间,达到给定精度阈值。

原文引述

Description: Derivative-free 1D optimization for unimodal functions on [L,R]. Uses golden ratio to reuse interior points and shrink interval deterministically. Time: O(log((R−L)/eps)) function evaluations Status: tested ——摘自本节点现有英文注释

展开阐述

  • 定义与背景

    • 黄金分割搜索(Golden Section Search):在闭区间 [L,R] 上,针对“单峰”(仅一处极小/极大)函数做极值搜索;不需要导数信息,适合黑箱评估。
  • 接口/字段与输入输出语义(据实现约定)

    • double goldenSectionMin(double L, double R, auto f, double eps=1e-12)
      • 返回在 [L,R] 上的近似极小点 x(需要时再评估 f(x) 得最小值近似)。
    • double goldenSectionMax(L,R,f,eps):对 −f 取最小即可实现最大化。
    • 要求:f 在 [L,R] 上单峰且可在任意点评估;eps 为停止阈值(可为绝对/相对长度判据的组合)。
  • 核心流程与关键要点(重用点位 + 黄金比例)

    • 设 φ=(1+√5)/2,ρ=φ−1≈0.618。
    • 取内部两点:
      • m1 = R − ρ·(R−L)
      • m2 = L + ρ·(R−L)(保证 m1 < m2,比例固定)
    • 评估 f(m1), f(m2) 并更新:
      • 若 f(m1) < f(m2),极小值在 [L, m2],令 R=m2,并将 m1 复用为新的 m2,重算新的 m1;
      • 否则在 [m1, R],令 L=m1,并将 m2 复用为新的 m1,重算新的 m2。
    • 每次仅新增一次函数评估;当 R−L ≤ eps 时终止,通常返回 (L+R)/2 作为代表点。
  • 数值稳定性与精度注意

    • 停机准则:在长度与相对误差双条件下更稳健,避免极窄区间的舍入影响。
    • 噪声/不连续:若 f 含噪声或跳变,适当放宽 eps;或采用更鲁棒的启发式(见 102-数值算法-爬山算法)。
    • 离散域:对整数/离散自变量不直接适用,可参考 140-杂项-三分搜索 或对邻近点做比较。
  • 复杂度与边界条件

    • 区间长度每步乘以 ρ≈0.618;迭代次数 O(log((R−L)/eps))。
    • 函数评估次数为首轮 2 次,之后每步新增 1 次;总体近似 1 + ⌈log_φ((R−L)/eps)⌉。
  • 常见变体/扩展与取舍

    • 最大化通过最小化 −f 实现;亦可对比较方向取反。
    • 140-杂项-三分搜索:三分对“明确凸/凹段”也常用,但黄金分割通过复用点减少评估。
    • 102-数值算法-爬山算法:后者适合非单峰/噪声目标的启发式局部搜索。

关联节点