常用的一维搜索方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Proof. 1°反证法:设 x* ∈[a, b]为最小点, z 若x* ∈[a, x1],由定义 知 f (x1)< f (x2 ),矛盾 (假设); 2 °若x* ∈[x2 , b ],由定义知 f (x1 ) > f (x2 ), 矛盾(条件); 结论成立。 注:上述定理为缩短区间的算法提供了理论根据。
k 1 2 3
xk 2 -3.5357 13.95
f′ (xk) 1.1071 -1.2952 不收敛。
1/f″( xk ) 5 13.50
§4 .2、插值法 用 f (x)在2 或3 个点的函数值或导数值,构造2 次或3次多项 式作为f (x)的近似值,以这多项式的极小点为新的迭代点。 3点2次,2点2次,4点3次,3点3次,2点3次等 以 3点2次为例: 取 x 1,x 2,x3,求出f (x1 ), f (x2 ), f (x3 )(利用“成功-失败”法)
( x12 − x22 ) g ( x3 ) + ( x22 − x32 ) g ( x1 ) + ( x32 − x12 ) g ( x2 ) b= ( x1 − x2 )( x2 − x3 )( x3 − x1 )
x = −
−
b 2a
算法思路: 1. 寻找满足如下条件的点,成为两头大中间小的点: x 1 < x 2 < x3,f (x1 ) > f (x2 ), f (x2 ) < f (x3 ) 2. 两头大中间小,可得a>0, 则 x 为g(x)的极小值 点,且 x ∈ [ x1 , x3 ] 3.若 x2 − x < ε ,则迭代结束,取 x* = x ,否则在点 中 x1 , x2 , x3 , x ,选取使f (x) 最小的点作为新的x2, 并使新的x 1 , x3各是新的x2近旁的左右两点,继续 进行迭代,直到满足终止准则。
a+b 取 x0 = ,若 f ' ( x0 ) < 0 则在 2
用 [ a, x0 ] 作新的区间[a,b],继续这个过程,逐步将区间 [a,b]缩小,当区间[a,b]的长度充分小时,或者当 f ' ( x0 ) 充分小时,即可将[a,b]的中点取做极小点的近似点,这 时有估计: a+b b−a < x* − 2 2
§3
二分法
设 f (x)在 [a ,b]上可微,且当导数为零时是解。取 x=(a+b) / 2, 那么 f ′(x) = 0 时, x 为最小点, x= x* ; f ′(x) > 0 时, x 在上升段, x* < x,去掉[x ,b] ; f′ (x) < 0 时, x 在下降段, x* > x,去掉[a, x] . (自己画算法框图)
α
x1
x2
b
x2 − α x1 − α = ""(2) t= b − α x2 − α
整理② :
x2 = a + t ( b -α ) x1 = a + t ( x2 -α )
−1 ± 5 结合①式:t 2 + t – 1 = 0 t= (舍去负值) 2 故 t≈0.618 注意: 上式有 t 2 = 1- t , 故有 x1 = a + (1- t )( b -α ) x2 = a + t ( b -α)
[ a, x0 ]中有极小点,这时
至于区间[a, b]的确定,一般可采用下述方法: 首先取初始点 x0 ,若 f ' ( x0 ) < 0 ,则在 x0 右方取点 x1 = x0 +∆x, ( ∆x也是事先给定的步长);若 f ' ( x1 ) > 0 , 则 令 a = x0, b = x1 ;若仍然有 f ' ( x0 ) < 0 ,则取 x2 = x1 +∆x (或将 ∆x 放大一倍,再取 x2 = x + ∆x ),若 f '( x2 ) > 0 , 则以 [ x 1 , x 2 ] 作区间[a,b];否则继续下去。 对于 f '( x0 ) > 0的情况,可类似于上面在 x0 左侧取点,此 时 ∆x < 0 . 优点:计算量较少,而且总能收敛到一个局部极小点。 缺点:收敛速度较慢
设二次插值多项式:a x2 +b x +c= g(x) a x12 +bx1 +c= g (x1 ) a x22 +bx2 +c= g (x2 ) ax32 +bx3 + c= g (x3 ) 解得: a , b
( x1 − x2 ) g ( x3 ) + ( x2 − x3 ) g ( x1 ) + ( x3 − x1 ) g ( x2 ) a=− ( x1 − x2 )( x2 − x3 )( x3 − x1 )
(算法框图见下页)
黄金分割法(0.618 法)(算法)
初始[a, b], ε>0
t = ( 5 − 1) / 2
x1 = α + (1- t)(b -α ) x2
=α +t (b -α )
b -α < ε ?
yes
α
x1 x2 x2
b
No
f( x1 )-f( x2 )>0?
STOP; x* =(α+b)/2
f
f
0
x*
t
0
x*
t
定理1:设 f:R→R 在[a, b ]上是单峰函数, a≤ x1 < x2 ≤b 。那么 1°若 f (x1)≥ f (x2),则 x* ∈[x1 , b] ,如左下图 2°若 f (x1)< f (x2) ,则 x* ∈[a, x2 ], 如右下图
α
x1
x2
b
α
x1
x2
b
注意: 1. 算法的终止条件可能无法保证算法一定收敛。 2. 若算法收敛,则在一定条件下,是超线性收敛的 收敛阶数为1.3 3. 初始点的产生可由“成功-失败”法产生。 4. 其他的插值法原理很接近,可自己看
§5
不精确一维搜索
不精确一维搜索: min f (x) 考虑从x(k)点出发,沿方向d(k)寻找新迭代点: x(k+1) =x(k) +λk d(k) 要求: 1°f(x(k) +λkd(k)) < f(x(k) ); 2°λk>0不能太小。 总体希望收敛快,每一步不要求达到精确最小,单 步速度快, 虽然迭代步数增加,但整个收敛达到 快速。
§1
“成功—失败” 法
以下方法称为“成功—失败”法(进退法): 步骤1:选取初始点 x∈R , 初始步长 h > 0 及精度ε> 0, ϕ11 = f ( x). 步骤2:计算 ϕ22 = f ( x + h). 步骤3:若 ϕ22 < ϕ11, 搜索成功, 转步骤4;否则,搜索失败, 转步骤5。 步骤4:令 x:= x + h, ϕ11 := ϕ22, h := 2h 步骤5:判断 h ≤ ε ? 若 h ≤ ε , 停止迭代, x** = x ;否则令 h 转步骤 2。 h=− ,
0
x
解: f ′ (x) =arctan x , f ″(x)=1/(1+ x2) 迭代公式: xk +1= xk - (1+ xk 2) arctan xk 取 x1= 1,计算结果: f′ (xk) 1/f″(xk ) k xk 1 1 0.7854 2 2 -0.5708 -0.5187 1.3258 3 0.1169 -0.1164 1.0137 4 -0.001095 -0.001095 x4≈ x* =0 取 x1=2,计算结果如下:
tg α>0 tg α<0
α α
x
f′ ( x )
α
b
f′ ( x )
α
x
b
* * * x 我们知道,在极小点 处,f ' ( x ) = 0,且 x < x 时, * f ( x ) 递减,即 f ' ( x ) < 0 ,而当 x > x*,函数递增,即 f '( x) > 0 。若找到一个区间[a, b], 满足性质 f ' ( a) < 0, f ' ( b) > 0 * * f ' x ( ) = 0 ,为找此 x* 则[a,b]内必有 f ( x) 的极小点 x ,且
§4
牛顿法(Newton)和插值法
§4 .1、Newton法: 对 f (x) 在 x k 点展开: f (x )= f (xk )+ f ′(xk )( x-xk ) +(1/2) f ″(xk )(x-xk )2 + o ||(x- xk) 2 || 取二次式(略去高阶项) g(x) = f (xk) +f ′(xk)(x-xk) + (1/2)f ″(xk)(x-xk)2 用 g(x)作为f (x)的近似,当 f ″(xk) > 0时,其驻点为极小点: g′ (x)= f ′(xk) +f ″(xk)(x - xk )=0 得 xk +1= xk –f ′(xk) /f ″(xk). 取 xk +1为新的迭代点。 以上过程即Newton法。 特点:收敛速度快,二阶收敛。缺点:须计算二次导数,对初 始点要求高、局部收敛。
h=− , 4
缺点:效率低。优点:可以求搜索区间 注意:初始步长不能选得太小
例1:设给定初始点为 a 及初始步长为 h, 求搜索区间[c, d] 1) 前进运算 首先计算 f (a), f (a+h), 如果 f (a)> f (a+h), 则步长加倍, 计 算f (a+3h). 若 f (a+h)<= f (a+3h), 则c=a, d=a+3h; 否则将步 长再加倍,并重复上面运算. 2) 后退运算 如果 f (a)< f (a+h), 则将步长缩为原来的1/4并改变符号,即 将步长改为-h/4, 如果 f (a)< f (a-h/4),则c=a-h /4,d=a+h; 否则 将步长加倍,并继续后退。 注意: 1. h 选择要适当.(太大含多个单峰区间,太小迭代次数多); 2. f (x)单调时无结果, (加迭代次数限制); 3. 可与中点法结合寻找单调区间(思考)。
工程优化设计中的数学方法
硕士研究生课程
理学院数学系:穆学文 Tel:88207669 E-mail:mxw1334@163.com
第三章 常用的一维搜索方法
一元函数求极小及线性搜索均为一维搜索。常用于求: min f(x(k)+ λd(k))=φ(λ) s.t. λ∈S S 有3种情况(-∞,+∞)或(0, +∞ )或 [a, b]。一般 地, 我们总可以考虑 x ∈ (-∞,+∞), 例 对问题 min f ( x)
通过上述定理,选二点 x1 < x2 , 比较 f (x1 ) 与 f (x2 ) ,可去掉 [a , x1 ] 或者[x2 , b]. 考虑条件: 1°对称: x1 – a = b- x2 ……① (使“坏”的情况去掉,区间长度不小于“好”的情况) 2°保持缩减比 t =(保留的区间长度/原区间长度) 不变。 (使每次保留下来的节点, x1或 x2 ,在下一次的比较中成 为一个相应比例位置的节点 )。 推导缩减比 t : 如图设第一次保留[a, x2 ] (去掉[x2 , b]), 那么第 二次保留的长度为[α, x1 ], 则
a a≤ ≤x x≤ ≤b b
令: 则:
f ( x), a ≤ x ≤ b F ( x) = +∞, others
a a≤ ≤x x≤ ≤b b
min f ( x) = min F ( x) −∞≤ x ≤+∞
−∞≤ x ≤+∞
我们主要介绍如下一些搜索方法:
z z z z z
“成功—失败”法 0.618法(黄金分割法) 二分法 牛顿法(Newton)和插值法 非精确搜索算法
§2
0.618法(黄金分割法)
0.618法是求单峰函数极值的一种试探法.所谓的单 峰函数是指只有一个峰值的函数,其严格定义有 定义1:设 f(x) 是定义在[a, b]上的函数,如果 1) ∃ x* ∈[a, b] 是φ在[a, b]上的最小点 , 2) 若对任意x1 ,x2, a≤ x1 < x2 ≤b , 满足: 1º 若x2 ≤ x* ,则 f (x1) > f (x2); 2º 若x1 ≥x* ,则 f (x1) <f (x2). 则称 f(x) 为[a, b]上的单峰函数。
Newton法算法框图:
初始 x1 ,ε1, ε2 >0 k=1
— f '(xLeabharlann Baidu ) —<ε1?
y
停;解 xk
N
停,失败
N
f ″(xk ) >0?
k=k+1
Y
xk +1= xk - f′ (xk ) / f″(xk )
Y
| xk +1 - xk |< ε2
N
例1: 求 min f (x)=
∫ arctan t d t
b= x2 , x2 = x1 x1 = α + (1-t)( b -α ) No
b
yes
α α= x1 , x1 = x2 x2 =α +t ( b –α)
x1
x2 x1
b
α
黄金分割法(0.618 法)的优缺点 优点:不要求函数可微,且每次迭代只需计算一 个函数值,计算量小,程序简单 缺点:收敛速度慢。