![人工智能数学基础](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=1738891163-YF8Z6LWoBdNFKkmfzd3iqx9YXYSGHKjh-0-1f4a1265f5b2cf28dd4c4872f0d74b5a)
运行结果如图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=1738891163-x5QFZBz86nIjPK2V8wHulVd4f36puGte-0-666a70c91f6fad7e3de3ec781a8209e8)
图3-4 运行程序得到的函数及其导函数图形
3.3.2 凹凸性
通过函数的单调性,可知道函数变化的增减性,从几何直观角度来看,可判断函数图形的升降。但是,要准确地描绘函数的图形,还必须研究函数曲线的弯曲方向及弯曲方向的转折点。
对于如图3-5所示的曲线,我们称之为凹曲线,其特征是曲线上任意两个不同点
、
连接的弦始终在曲线弧的上方。
同样地,对于如图3-6所示的曲线,我们称之为凸曲线,其特征是曲线上任意两个不同点
、
连接的弦始终在曲线弧的下方。
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_375.jpg?sign=1738891163-DMphWne2gQAo1RBSQyZdJzybH4Xeabic-0-12f427ed7275b39d90eda79d4dd49c73)
图3-5 凹曲线
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_376.jpg?sign=1738891163-CBkN1uq6CUZ7fF6EiqVFQeOgvoWp1V5v-0-69df5b6ada523f4dff7cf1bd576b6761)
图3-6 凸曲线
为此,对于曲线的凹凸性定义如下。
设定义在
上且连续,若对
中任意不同的两点
,总有
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_381.jpg?sign=1738891163-AAI7atqJDErzY0HzW9g5IGNkob9hSfvU-0-42ffb0346de9705a5aff4ac8eb4cc93b)
则称曲线在
上是凸的;若对
中任意不同的两点
,总有
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_386.jpg?sign=1738891163-VTRdCFp3inysOFVkTx3Y6WaltxVjakAV-0-3792504e93de1e03d594bc60255e86d6)
则称曲线在
上是凹的。
曲线的凹凸分界点称为曲线的拐点。可以用二阶导数的符号判定函数的凹凸性,现有如下定理。
设函数在
上连续,在
内具有二阶导数,则:
(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=1738891163-W5xBllPs94qWHavLrmVfP37z3zxzeAUk-0-54bf401920bb55611f9427830568f2bf)
运行结果如图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=1738891163-UXxy7ZKnmiwMnRmx1l4PA3sPjutXUDEM-0-8bb151f24b29235b8b9474b2272da0e1)
图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=1738891163-TdkCFfWJLjnF98p0HtQdlzEio2gojXd6-0-80cec22d804e122b2547fba1f668db11)
输出结果如下:
![img](https://epubservercos.yuewen.com/10291D/20266983808220206/epubprivate/OEBPS/Images/txt003_459.jpg?sign=1738891163-dvcFPpFHCb1o0xB5yMFzFYJ3Dq4WZB1g-0-d4af332de10352bf075cc8fdaf8226f2)