python凸函数最值 python求函数最值的方法

三分法求凸函数的极值

求凸函数的极值是一个常见的问题,常见的方法如梯度下降法,牛顿法等,今天我们介绍一种三分法来求一个凸函数的极值问题。

创新互联主营玉田网站建设的网络公司,主营网站建设方案,成都app开发,玉田h5微信平台小程序开发搭建,玉田网站营销推广欢迎玉田等地区企业咨询

对于如下图的一个凸函数$f(x),x\in [left,right]$,其中lm和rm分别为区间[left,right]的三等分点,我们发现如果f(lm)f(rm)时,最值的横坐标x一定在[lm,right]的区间内。

利用这个性质,我们就可以在缩小区间的同时向目标点逼近,从而得到极值。举一个例子,如下图在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点P(x,y),求点P到抛物线的最短距离d,其中-200≤a,b,c,x,y≤200。我们另pivot代表抛物线的对称抽,可以发现当Xpivot,我们可以取left = pivot,right = inf, 反之left = -inf , right = pivot, 其距离恰好满足凸形函数。而我们要求的最短距离d,正好就是这个凸形函数的极值。

望采纳,谢谢。

凸函数有最小值还是最大值

. 紧集上的连续严格凸函数是有唯一极值点的。可以用反证法证明,假如x1, x2都是极值点,那么因为严格凸

与x1,x2是极值点矛盾。证毕。2. 开集上的严格凸函数不一定有极值点。比如

通过求二阶导可以验证其在(-∞,0]是凸的,但是不存在极值。3. 有界集上的连续可微函数是一定能通过梯度下降法找到极值点的,因为有如下定理(见, Page 38):"设pk是下降方向(不一定是梯度),ak是步长并满足Wolfe条件,设目标函数f在Rn上有界,且在开集N上连续可微,N是包含{x: f(x)\u0026lt;=f(x0), x0是初始点}的集合,假设▽f在N上Lipschitz连续,那么有"

其中θk是下降方向pk与-▽f的夹角。通过这条定理可以证明,梯度下降法和牛顿法,逆牛顿法都是收敛的。(1) 令pk = -▽f 可推出

,故梯度下降法收敛(2) 令

可推出

,故牛顿法收敛。(3) 令

,其中Bk是对称矩阵,可推出 【多元连续严格凸函数是否存在唯一极值点】

,故拟牛顿法收敛。4. 理论上步长ak应该是计算出来的,在梯度下降法实际应用中通常都是把步长选取一个较小的ak(取大了会震荡),是一个折衷的办法,但是实际效果还不错。参考文献 Numerical Optimization 2ed. Chapter 3.

■网友的回复

看到这么多中文数学术语吓到了……如果这个优化问题定义在凸集合上的话:strictly convexity(严格凸性,感谢 @netfish 指出和strongly convex的区别)保证了函数一定有唯一的极值点,因为如果函数有两个极值点a和b都在集合内部,那线段上的所有点函数值都是f(a),也就是这条线段上函数的曲率为0,与严格凸性的定义(曲率/二阶导处处非负)相悖。即使最优解在集合边界也不会出现多个解,因为严格凸函数的等高线不可能是直线段(否则这个方向上的二阶导为0),而凸集合的边界不可能是“凹”的,所以不存在边界多点有同样函数值的情况。所有的凸函数都一定能用精确梯度下降(gradient descent with optimal line search)找到(一个,如果有多个的话)最优解,因为只有在最优解附近的导数是0梯度下降才会停下来,除非最优无法达到(比如R++上的1/x这种函数,最优在无穷)——不过题主要求函数定义在紧集合上了,所以没有这种问题。因为如果梯度下降到了一个a点,如果其负梯度方向和集合在这一点的边界的切线反向(大概是指向外面),则它就是最优;否则,梯度下降肯定不能在这收敛——会沿着集合边缘下降找到真正的最优解。如果问题不是定义在凸集合,那就不好说了:比如在二维平面上定义f(x,y)=x^2+y^2(严格凸性)在Y轴右边有一个开口朝左的月牙形集合,在这个上面做优化,梯度下降就有可能找到月牙的任何一个端点(甚至极端情况下可能找到月牙的中间),这取决于初始化的位置。

凸函数一定有最大值吗

如果函数 在区间 上是凸函数,那么对于区间 内的任意 , ,…, ,都有 .若 在区间 上是凸函数,那么在 中, 的最大值是________________. 由新定义知


网站标题:python凸函数最值 python求函数最值的方法
路径分享:http://hbruida.cn/article/dojsepe.html