数学之凸优化(一)

#凸优化
本章我们主要讲解一维的搜索方法,也是最优化理论的一部分,我们怎么在一个区间内找到找到一个极值呢?

我们先来讨论一元单值函数的$f$,在区间$[a,b]$上的极小值点呢?

二分法

二分法是一种利用目标函数的一阶导数来连续压缩区间的方法,计算过程比较简单。

首先,确定初始区间的中点

$$ x=\frac{a+b}{2} $$

然后计算函数$f$,在x处的一阶导数。

如果$f(x)'>0$说明极小点位于x的左侧,也就是说x是递增的,那么极小点肯定是x的左侧。

依次类推,不断的缩小范围,最终找到我们的极小值点。

牛顿法

首先我们举个例子,求如下函数的极小点,初始值$x_0=0.5$, 精度$\alpha=0.001$,就是两次迭代的结果小于$\alpha$就停止

$$ f(x)=\frac{1}{2}x^2-sinx $$``` $$f(x)'=x-cosx$$ $$f(x)''=1+sinx$$ ```math $$ x_1=0.5-\frac{0.5-cos0.5}{1+sin0.5} $$

就是用初始值减去两次导数的比值。

依次类推,就能达到当收敛时候,x的取值是多少。

不难看出,如果使用牛顿法,需要原函数有二阶导数,否则是无法使用的。

当$f(x)''>0$时候,牛顿法是能够逼近极小值点,反之是能够逼近极大值点。

我们可以给出牛顿法的迭代公式

$$ x_k=x-\frac{f(x)'}{f(x)''} $$

来一个灵魂的拷问

牛顿法为什么能取到以上的效果呢?

牛顿法其实不断的逼近$f(x)$一阶导数为0的点,也就是极值点。

割线法

上文也提到过,牛顿法要求$f(x)$有二阶导数,如果没有二阶导数怎么办呢?

这个时候我们可以采用不同点处的一阶导数对其近似得到。

$$ f(x^k)''=\frac{f(x^k)'-f(x^{k-1})'}{x^k-x^{k-1}} $$

带入上面的迭代公式,这样我们就还可以使用牛顿法,求极值。

以上描述的就是割线法。

结语

不知道读者发现没有,上面这些找极值的方法,有点像梯度方法,不断迭代逼近最优解,这也就是我们学习这些的理论的必要性,了解为什么这么做。

# math 
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×