直线搜索 ¶
Abstract
本章主要讨论的问题是 \(\min{(\varphi (t))},\varphi: R^1 \to R^1\),这种迭代方法称为直线 / 一维搜索。并且在多维问题也能用到。
搜索区间的确定 ¶
-
假设一元函数 \(\varphi (t)\) 是单谷函数
- 设 \(\varphi \subset R^1 \to R^1\),\(t^*\) 是 \(\varphi (t)\) 在 \(L\) 上的全局最小点。如果对于 \(L\) 上任取的两点 \(t_1, t_2\) 且 \(t_1 < t_2\) 都有
\[ 当t_2 \le t^*时,\varphi(t_1) > \varphi(t_2) \\ 当t_1 \ge t^*时,\varphi(t_1) < \varphi(t_2) \]则称 \(\varphi(t)\) 是区间 \(L\) 上的单谷函数。
- 设 \(\varphi \subset R^1 \to R^1\),\(t^*\) 是 \(\varphi (t)\) 在 \(L\) 上的全局最小点。如果找到 \(t_1 \in L\) 和 \(t_2 \in L\) 使得 \(t_1 < t^* < t_2\),则 \([t_1, t_2]\) 为 \(\varphi(t)\) 极小点的一个搜索区间,记为 \(\{t_1, t_2\}\)。
- 设 \(\{a,b\}\) 是单谷函数 \(\varphi(t)\) 极小点的一个搜索区间。在 \((a,b)\) 上任取两点 \(t_1\) 和 \(t_2\) 且 \(t_1<t_2\)。若 \(\varphi(t_1) < \varphi(t_2)\),则 \(\{a,t_2\}\) 是 \(\varphi(t)\) 极小点的一个搜索空间;若 \(\varphi(t_1) > \varphi(t_2)\),则 \(\{t_1, b\}\) 是 \(\varphi(t)\) 极小点的一个搜索空间。
-
搜索区间的确定
- 选定初始点 \(t_0\) 和步长 \(h\)
- 计算并比较 \(\varphi(t_0)\) 和 \(\varphi(t_0+h)\),有 3,4 两种情况
- 当 \(\varphi(t_0)<\varphi(t_0+h)\) 时,比较 \(\varphi(t_0)\) 和 \(\varphi(t_0-h)\),有 5,6 两种情况
- 当 \(\varphi(t_0)\ge\varphi(t_0+h)\) 时,比较 \(\varphi(t_0+(2^k-1)^h), k=1,2,...\),直到对于某个 \(m(m \ge 1)\) 使得
\[ \varphi(t_0+(2^{m-1}-1)^h) \ge \varphi(t_0+(2^m-1)^h) < \varphi(t_0+(2^{m+1}-1)^h) \\ 设 \ \ u=\varphi(t_0+(2^{m-1}-1)^h), v=\varphi(t_0+(2^{m}-1)^h), w=\varphi(t_0+(2^{m+1}-1)^h) \]此时得到搜索区间 \(\{u,v,w\}\),因为区间 \([v,w]\) 是 \([u,v]\) 的两倍长,所以只要比较 \(v\) 和区间 \([v,w]\) 中点 \(r=\frac{v+w}{2}\) 的函数值,立刻可以将 \([u,w]\) 缩短 \(\frac{1}{3}\)
- 当 \(\varphi(v) < \varphi(r)\) 时,取 \(\{u,v,r\}\) 为搜索区间
- 当 \(\varphi(v) \ge \varphi(r)\) 时,取 \(\{v,r,w\}\) 为搜索区间
- 当 \(\varphi(t_0-h) > \varphi(t_0)\) 时,取 \(\{t_0-h,t_0,t_0+h\}\) 为搜索区间
- 当 \(\varphi(t_0-h)\le\varphi(t_0)\) 时,比较 \(\varphi(t_0-(2^k-1)^h), k=1,2,...\),直到对于某个 \(m(m \ge 1)\) 使得
\[ \varphi(t_0-(2^{m-1}-1)^h) \ge \varphi(t_0-(2^m-1)^h) < \varphi(t_0-(2^{m+1}-1)^h) \\ 设 \ \ u=\varphi(t_0-(2^{m-1}-1)^h), v=\varphi(t_0-(2^{m}-1)^h), w=\varphi(t_0-(2^{m+1}-1)^h) \]此时得到搜索区间 \(\{u,v,w\}\),因为区间 \([v,w]\) 是 \([u,v]\) 的两倍长,所以只要比较 \(v\) 和区间 \([v,w]\) 中点 \(r=\frac{v+w}{2}\) 的函数值,立刻可以将 \([u,w]\) 缩短 \(\frac{1}{3}\)
- 当 \(\varphi(v) \ge \varphi(r)\) 时,取 \(\{w,r,v\}\) 为搜索区间
- 当 \(\varphi(v) < \varphi(r)\) 时,取 \(\{r,v,u\}\) 为搜索区间
-
步长的选择
对分法 ¶
- 适用于 \(\varphi: R^1 \to R^1\) 在已获得的搜索区间 \(\{a,b\}\) 内具有连续的一阶导数,并且已导出它的表达式
- 算法流程(已知 \(\varphi(t)\) 和 \(\varphi^\prime(t)\) 的表达式,终止限 \(\varepsilon\))
- 确定初始搜索区间 \(\{a,b\}\),要求 \(\varphi^\prime(a)<0,\varphi^\prime(b)>0\)
- 计算 \(\{a,b\}\) 的中点 \(c=0.5(a+b)\)
- 若 \(\varphi^\prime(c)<0\),则 \(a=c\),转 4;若 \(\varphi^\prime(c)=0\),则 \(t^*=c\),转 5;若 \(\varphi^\prime(c)>0\),则 \(b=c\),转 4
- 若 \(|a-b|<\varepsilon\),则 \(t^*=0.5(a+b)\),转 5,否则转 2
- 打印 \(t^*\),停机
Newton 切线法 ¶
- 适用于 \(\varphi: R^1 \to R^1\) 在已获得的搜索区间 \(\{a,b\}\) 内具有连续的二阶导数,并且已导出一阶和二阶导数的表达式
-
算法流程
- 设在区间 \([a,b]\) 中经过 \(k\) 次迭代已求到方程 \(\varphi^\prime(t)=0\) 的一个近根似 \(t_k\)。过 \((t_k,\varphi^\prime(t_k))\) 作曲线 \(y=\varphi^\prime(t)\) 的切线,其方程是
\[ y-\varphi^\prime(t_k)=\varphi^{\prime\prime}(t_k)(t-t_k) \]- 然后用这条切线与横轴交点的横坐标 \(t_{k+1}\) 作为根的新的近似,令 \(y=0\) 解出
\[ t_{k+1}=t_k-\varphi^\prime(t_k)/\varphi^{\prime\prime}(t_k) \]
黄金分割法 ¶
- 适用于 \([a,b]\) 区间上的任何单谷函数 \(\varphi(t)\) 求极小点问题
- 算法流程(已知 \(\varphi(t)\),终止限 \(\varepsilon\))
- 确定 \(\varphi(t)\) 的初始搜索区间 \(\{a,b\}\)
- 计算 \(t_2=a+\beta(b-a), \varphi_2=\varphi(t_2)\)
- 计算 \(t_1=a+b-t_2, \varphi_1=\varphi(t_1)\)
- 若 \(|t_1-t_2|<\varepsilon\),则打印 \(t^\prime=\frac{t_1+t_2}{2}\),停机;都则,若 \(|t_1-t_2| \ge \varepsilon\),转 5
- 判别 \(\varphi_1 \le \varphi_2\) 是否满足:若满足,则置 \(b=t_2,t_2=t_1,\varphi_2=\varphi_1\),然后转 3;否则,若 \(\varphi_1>\varphi_2\),则置 \(a=t_1,t_1=t_2,\varphi_1=\varphi_2,t_2=a+\beta(b-a),\varphi_2=\varphi(t_2)\),然后转 4
最后更新:
2023年9月28日 18:01:09
创建日期: 2023年9月26日 10:25:51
创建日期: 2023年9月26日 10:25:51