![人工智能数学基础](https://wfqqreader-1252317822.image.myqcloud.com/cover/67/38507067/b_38507067.jpg)
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=1738880407-7mxrXIk4YZV0VkzPoHzMysBxVMzD8LPg-0-25be57a71f66523f4550c3ff5d3ace43)
运行结果如图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=1738880407-FiKsROwxreXasFDqaNJTYdJO6z2cPt1e-0-d8d16ac1e02554b2669cea4ecd5344be)
图3-4 运行程序得到的函数及其导函数图形
3.3.2 凹凸性
通过函数的单调性,可知道函数变化的增减性,从几何直观角度来看,可判断函数图形的升降。但是,要准确地描绘函数的图形,还必须研究函数曲线的弯曲方向及弯曲方向的转折点。
对于如图3-5所示的曲线,我们称之为凹曲线,其特征是曲线上任意两个不同点
、
连接的弦始终在曲线弧的上方。
同样地,对于如图3-6所示的曲线,我们称之为凸曲线,其特征是曲线上任意两个不同点
、
连接的弦始终在曲线弧的下方。
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_375.jpg?sign=1738880407-E38qkiBEucFdLHZWmLghPdivTwEWukzB-0-888b41147355d3ed9bf9243a63134170)
图3-5 凹曲线
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_376.jpg?sign=1738880407-dMpfemNjuKsJXr4q13I6tb1vO4C81dLi-0-1817e4411b4c7ed3053b5b5f1104d7a9)
图3-6 凸曲线
为此,对于曲线的凹凸性定义如下。
设定义在
上且连续,若对
中任意不同的两点
,总有
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_381.jpg?sign=1738880407-vDF4T0G6S5GwyR3IfYGL0UfXgwebpXHZ-0-c8d6c2f84a57564dce325fc4968490ad)
则称曲线在
上是凸的;若对
中任意不同的两点
,总有
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_386.jpg?sign=1738880407-wvOBW9RSxxpm3W8ppN4vqJrzg89oBlrm-0-9c2cf73210039eeb0280420c0b219467)
则称曲线在
上是凹的。
曲线的凹凸分界点称为曲线的拐点。可以用二阶导数的符号判定函数的凹凸性,现有如下定理。
设函数在
上连续,在
内具有二阶导数,则:
(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=1738880407-mrxGCreXl1PbGfKqmqZU2J3LuGLyrzt5-0-c48859d2b914adc4f07d0a2bc9506e27)
运行结果如图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=1738880407-hSxSp710Is0Yki4SJMMjeM4lROCbIyeT-0-f6e3c7778544603e2e9c2f1a8021dc6e)
图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=1738880407-Yjsw5uZwFGWI9vcz0Yf1nfq1uJ9YY1P8-0-0a62728690ff63d88248674c3f202faf)
输出结果如下:
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_459.jpg?sign=1738880407-n3Akn5vBVuXc8c61toNHpyKHIgincZPn-0-da1c0a3c0dedc37e230b785a51aba98a)