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