3.3 导数在函数性质中的应用
导数的应用比较广泛,凡是反映变化率的问题,均可以用导数加以解决。在人工智能算法中,导数常用于函数单调性、凹凸性、极值的求解和基于梯度的寻优算法等方面。本节主要用导数研究函数的单调性、凹凸性和极值等性质。
3.3.1 单调性
函数的单调性也叫作函数的增减性。若当函数的自变量x在其定义区间内增大(或减小)时,函数值
也随着增大(或减小),则称该函数在该区间上具有单调性。
判断函数单调性的方法主要有图像观察法、定义法和导数法。其中,利用导数法求解函数单调性,思路清晰,步骤明确,既快捷又易于掌握,其涉及的定理如下。
设函数在
上连续,在
内可导,则:
(1)如果在内
,那么函数
在
上单调增加;
(2)如果在内
,那么函数
在
上单调减小。
例3-9 判断函数的单调性。
解:使用Python包Pylab和Matplotlib绘制函数及其导函数图,观察导数为0的大致位置,然后利用Python包SciPy中的函数fsolve求解导函数方程,得到使导数变号的点,该点可用于划分单调区间。具体程序如下:
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_365.jpg?sign=1739500013-4RixneBJcyXXGljP0uCxye1sLF3Y2dRi-0-69cff2f278e6a9fc23e8bd9ced1b0531)
运行结果如图3-4所示,导数为0的大致位置在-0.6和0.6附近,给定初值,计算导函数为0时的方程精确解为-0.66和0.78。区间[-2,-0.66]为单调递减区间,区间(-0.66,0.78]为单调递增区间,区间(0.78,2]为单调递减区间。
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_366.jpg?sign=1739500013-ra8b4CeQTSck6ZWuhIBAWaoxGsugTpvc-0-3155230202822a0d10609c7ed4d7c168)
图3-4 运行程序得到的函数及其导函数图形
3.3.2 凹凸性
通过函数的单调性,可知道函数变化的增减性,从几何直观角度来看,可判断函数图形的升降。但是,要准确地描绘函数的图形,还必须研究函数曲线的弯曲方向及弯曲方向的转折点。
对于如图3-5所示的曲线,我们称之为凹曲线,其特征是曲线上任意两个不同点
、
连接的弦始终在曲线弧的上方。
同样地,对于如图3-6所示的曲线,我们称之为凸曲线,其特征是曲线上任意两个不同点
、
连接的弦始终在曲线弧的下方。
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_375.jpg?sign=1739500013-Nm9VzLE5EqhYLahlBtn0RWj3wRq7lWw0-0-43a1ac69b49d3e9257d02d8785e4f37e)
图3-5 凹曲线
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_376.jpg?sign=1739500013-iV11XvGNSsUfN3oJGM7i6lhT53Tuv9UV-0-b07753b00ef144f243588ab3673fe858)
图3-6 凸曲线
为此,对于曲线的凹凸性定义如下。
设定义在
上且连续,若对
中任意不同的两点
,总有
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_381.jpg?sign=1739500013-CfF3sGi6zWafwpetOvwISXnbHaCSaDqQ-0-321b1ebbb06a384d278f34bff780cd02)
则称曲线在
上是凸的;若对
中任意不同的两点
,总有
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_386.jpg?sign=1739500013-PoH5VGTRK5sFBVfw7d6ZGXudBUKx9ven-0-7a9725c22aa70472e952a89510a087a8)
则称曲线在
上是凹的。
曲线的凹凸分界点称为曲线的拐点。可以用二阶导数的符号判定函数的凹凸性,现有如下定理。
设函数在
上连续,在
内具有二阶导数,则:
(1)如果在内
,那么曲线
在
内是凹的;
(2)如果在内
,那么曲线
在
内是凸的。
例3-10 判断函数的凹凸性。
解:使用Python包Pylab和Matplotlib绘制函数及其二阶导函数图,观察二阶导数为0的大致位置,利用Python包SciPy中的函数fsolve求解导函数方程,得到使二阶导数变号的点,该点可用于划分凹凸区间。具体程序如下:
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_402.jpg?sign=1739500013-4TEvyDGDDgBox3wqv1V56NjPLcVIJ0Z9-0-1daab5b3f62cfdf6660f646b5f086b8e)
运行结果如图3-7所示,二阶导数为0的大致位置在0附近,给定初值0.1,计算得到二阶导函数为0时的方程精确解为0.0。区间[-2,0]为凹区间,区间(0,2]为凸区间。
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_403.jpg?sign=1739500013-vxN1hvwE8YWqu1p9AC3WEZwPn6lmWchk-0-179f76c0a707e824b6c65ea3e0ce01ca)
图3-7 函数及其二阶导函数图形
3.3.3 极值
设函数在
内有定义,
是
内的一个点,若存在
的某去心邻域使对在该邻域内的任何
,都有
,则称
为
的一个极大值(极小值),称
为
的一个极大值点(极小值点)。极大值与极小值统称为极值,极大值点与极小值点统称为极值点。
从定义可以看出,函数的极大值和极小值是局部概念,而最大值和最小值是针对区间的全局概念,它们可能相等,也可能不相等。若函数在某点存在极值,且有导数,则函数取极值的必要条件如下。
设函数在点
处具有导数,且在
处有极值,那么函数在点
处的导数
。
在实际计算中,需要计算导数不存在的点和的点[称为
的驻点],再进一步判断这些点是极大值点还是极小值点。函数取极值的充分条件如下。
函数取极值的第一种充分条件 设在
的某去心邻域内可导,在
点连续,
是驻点或
不存在,则:
(1)如果当取
左侧邻近的值时,
,且当
取
右侧邻近的值时,
,那么函数
在
处取极大值;
(2)如果当取
左侧邻近的值时,
,且当
取
右侧邻近的值时,
,那么函数
在
处取极小值;
(3)如果当在
的左右两侧邻近取值时,
的符号不改变,则
在
处不取极值。
函数取极值的第二种充分条件 设为函数
的一个驻点,且该点处函数的二阶导数存在,那么:
(1)若,则
为极小值;
(2)若,则
为极大值;
(3)若,则
可能是也可能不是极值。
例3-11求函数的极值点和最值点。
解:使用Python包SciPy中的优化函数minimize求解,求得驻点后,可以根据函数的一阶导数和二阶导数判定极值点和最值点[7]。具体程序如下:
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_458.jpg?sign=1739500013-CAs0MJJaJppBfIIx316V2y2MbHjSjded-0-e3329f892c54bc5918f648e36b173d0e)
输出结果如下:
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_459.jpg?sign=1739500013-9Qfn5gNT3xFQD0ammnq3hHlCIc2n6WGp-0-92ff2e1425b4f9ecc38cdf29080ed843)