华电北风吹
天津大学认知科学与计算重点实验室
日期 2015/11/7
本文主要从试探法、插值法、微积分中的求根法讲解怎么求解一维函数极值问题。
一、试探法
1、斐波那契法(分数法)
适用条件:存在极值点的一维凸函数,或者在指定求解区间上的凸函数,本文举例以标准凸函数为例(下凸)。
y=f(t)
是区间[a,b]上的凸函数,在此区间内存在极小值点
t′
。若在区间内任意取两相异点
a1,b1,假设a1<b1
,计算函数值
f(a1),f(b1)
,则必有如下三种情况,
1)
f(a1)<f(b1)
,这是极小值点必在
[a,a1]
之间(图1)
2)
f(a1)>f(b1)
,这是极小值点必在
[a1,b]
之间(图2)
3)
f(a1)=f(b1)
,虽然概率几乎为0,但是还是说一下吧,这个时候可以归结为情况1或者情况2解决。
注意到斐波那契数列的性质
F(n)=F(n−1)+F(n−2)
先把区间分为
F(n)
份,分别计算
F(n−1)
和
F(n−2)
处的函数值即可判断出极值点是位于前
F(n−1)
个区间还是后
F(n−1)
个区间。这样就可以把区间长度缩短为
F(n−1)
了。然后依次递归压缩区间长度直到确定所在的区间长度为
F(1)=1
。而且,在对长度为
F(n−1)
的区间递归的过程中,发现
F(n−2)
处的值在上一次递归的时候已经计算好,这一次只需要计算
F(n−1)−F(n−2)
处的值即可,即每次迭代只需要计算一次函数值。
2、黄金分割法(0.618法)。
求解的问题类型类似于斐波那契法,求解方法也类似。每次试点取在区间长度的0.618倍处和0.382倍处。这样每次可缩短区间长度为原来的0.618倍。依次递归。直到达到最大迭代次数或者满足收敛判定条件。
二、插值法
1、抛物线法
对极值点周围的点采样,然后抛物线拟合,把抛物线的极值点作为真实极值点的近似。
2、三次插值法
同抛物线法。
三、微积分中的求根法
转化为求解导数为0的解方程问题。
1、切线法
牛顿法
2、二分法
依次二分分割区间。