直线搜索/一维搜索

这篇博客介绍了直线搜索的概念和应用,特别是针对最优化问题。文中详细阐述了直线搜索的定义、搜索区间以及两种一维搜索方法:黄金分割法和抛物线插值法,包括它们的算法描述和适用场景。黄金分割法是一种区间收缩算法,而抛物线插值法则属于函数逼近法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在讲解最速下降法的博客中,讲到了使用直线搜索的方法来求解 xk+1 (也就是求解步长因子 tk ),但是并没有讲解什么叫做直线搜索,现在对直线搜索进行补充说明。

直线搜索

定义1:对于问题

minϕ(t)
其中 ϕ:R1R1 。求解该一元函数极小值问题的 迭代方法我们称为 直线搜索一维搜索
直线搜索是求解一元函数极小值问题的迭代方法,这种方法适用于任何函数,与之相对应的是微积分方法。对于能够求解出导数的函数 ϕ(t) ,我们只需要求解出他的导数,然后令 ϕ(t)=0 即可。对于这种可以求出导数的情况下相应的求解方法会简单一点,但是实际问题中可能更多的使用直线搜索方法。
直线搜索方法求一元函数极小值问题,一般可以分为两类,分别是区间收缩法和函数逼近法。

搜索区间

定义2:(单谷函数) ϕ:LR1R1 t ϕ(t) L 上的全局极小点。如果对于 L 上的任意两点 t1 t2 ,且 t1<t2 ,都有

t2tϕ(t1)>ϕ(t2)
t1t,ϕ(t1)<ϕ(t2)
那么乘 ϕ(t) 是区间 L 上的 单谷函数

定义3:(搜索区间) ϕ:LR1R1 t ϕ(t) L 上的全局极小点。若果能够找到 t1,t2L ,使得 t[t1,t2] ,那么闭区间 [t1,t2] 就称为 ϕ(t) 极小点的一个搜索区间,记为 { t1,t2}

定理1: { a,b} 是单谷函数 ϕ(t) 极小点的一个搜索区间,在 (a,b) 上任取两点 t1 t2 ,且

### 一维搜索算法求解二元方程极值 在一维搜索过程中,通常采用的是沿着某个方向逐步缩小最优解所在的区间来逼近最优点。对于多变量优化问题,可以通过固定其他维度上的参数,在单个维度上执行这种搜索过程。 #### 使用梯度信息的一维搜索策略 当处理二元函数 \(f(x, y)\) 的极值问题时,一种常见的方式是在当前点 \((x_0,y_0)\) 处沿负梯度方向移动一小步,即: \[d_k = -\nabla f(x_k, y_k), k=0,1,...\] 其中 \(d_k\) 表示第k次迭代的方向向量[^1]。然而这并不是严格意义上的一维搜索,因为这里涉及到了两个自变量的变化。为了真正实现一维搜索,可以在每次更新其中一个变量的同时保持另一个不变,比如先让\(y=y_0+\alpha d_y\) 而暂时不改变 \(x=x_0\) ,然后再反过来操作;或者更常用的做法是从初始猜测位置出发,按照某种方式选取一系列测试点形成一条直线路径,并在这条直线上应用标准的一维最小化技术找到局部最低点作为新的起点继续探索直到满足收敛条件为止。 #### 不依赖导数的方法——黄金分割法 如果目标函数难以解析表达其导数,则可考虑使用不需要显式计算梯度的信息来进行一维搜索的技术之一就是黄金分割法 (Golden Section Search),它通过不断收缩包含全局最小值区间的长度比例为约等于0.618的方式来高效定位近似最佳解的位置[^2]。 ```c double goldenSectionSearch(double (*func)(double x, double y), double a, double b, int maxIter){ const double gr = (sqrt(5)-1)/2; double c = b-a; while(maxIter--){ double x1=a+c*gr*(1-gr); double x2=b-c*gr; if(func(x1)<func(x2)){ b=x2; }else{ a=x1; } c=(b-a)*gr; } return (a+b)/2; } ``` 此代码片段展示了如何利用C语言编写一个简单的基于黄金分割法则的一维搜索程序框架用于寻找给定范围内某特定条件下定义的目标函数的极小值所在的大致坐标范围内的中间值。注意实际应用中可能还需要加入更多细节控制如精度阈值判断等逻辑以确保最终结果的有效性和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值