凹凸性、拐点与函数作图
导数的符号只回答升降。两段同样在上升的曲线,可以一段越升越陡、另一段越升越缓,差别不在 的正负,而在 自身的增减。把这一层信息也算出来,再补上定义域两端与间断点附近的走向,函数的图象就不必靠描点去猜。
1 · 二阶导数与弯曲的方向
对导函数再求一次导,得到二阶导数 。它是 的变化率,也就是切线斜率变化的快慢。
定义 1.1(下凸与上凸) 设 在区间 上连续。若对 内任意两点 恒有 即弧不高于弦,则称 的图象在 上下凸(convex);不等号反向时称上凸(concave)。
定义只用到函数值,不要求可导。二阶导数把它换成一个可算的判据。
定理 1.2 设 在区间 上二阶可导。若 对 内每个 成立,则图象在 上下凸;若 恒成立,则上凸。
论证走的是切线: 说明 递增,切线斜率沿曲线一路变大,曲线始终在每一条切线的上方;把弦的两个端点各作一条切线,弦就压在弧之上。 的 恒正,图象是开口向上的抛物线; 的 恒负,对数曲线一路向右上方走却越走越平。
注 · 中文里「凹」与「凸」有两套互相颠倒的用法。《高等数学》一系把 的一段叫作凹弧, 的叫凸弧,说的是曲线相对于观察者「凹进去」;数学分析与凸分析一系则把 的函数叫凸函数,与 convex function 直接对应,于是同一段曲线在两套术语下分别是「凹」和「凸」。英文没有这个歧义: 是 convex(或 concave up), 是 concave(concave down)。本页一律写「下凸 / 上凸」,读到别处的教材时按 的符号还原即可。
2 · 拐点
定义 2.1(拐点) 设 在 处连续。若在 的某个邻域内,曲线在 一侧下凸、另一侧上凸,则称点 是曲线的拐点(inflection point)。
拐点是凹凸性的分界,判据在于 变号, 取零本身还不够。二阶可导时 是必要条件: 在拐点两侧异号且连续,中间必经过零。反过来不成立。
警示 · 的二阶导数 在 处为零,两侧却同为正。整条曲线一路下凸,原点不是拐点,只是曲线在那里暂时「平」了一下。把「」当成拐点的判据, 这一族就会全部判错。
这与极值的判别是同一种结构: 变号处出极值, 变号处出拐点,各自的「导数为零」都只是候选条件。两者的位置一般互不相干—— 的极值在 ,拐点在 ; 的极大值在 ,拐点在 。
拐点还有一个不依赖二阶导数的说法:切线在该点穿过曲线。别处的切线只是碰一下就退回同侧,拐点处的切线从曲线的一侧跨到另一侧。 在原点的切线是 ,代入 与 分别得曲线在切线下方与上方,穿越发生在原点。
3 · 渐近线
有界的视窗画不出无穷远处的走向,渐近线(asymptote)补上这一段:曲线与某条直线的距离趋于零时,这条直线就是它的渐近线。三类的求法各不相同。
- 竖直渐近线只出现在定义域的挖去点上。 时 ,则 是竖直渐近线。 在 处、 在 处都是如此。
- 水平渐近线由 时的极限给出。 时 是右侧的水平渐近线,左右两侧可以不同:logistic 函数 向右趋于 、向左趋于 ,两条水平线一上一下把曲线夹住。
- 斜渐近线要两次求极限。先由 定斜率,再由 定截距,两个极限都存在且 时 是斜渐近线。 的 、,斜渐近线是 ,同时它在 处还有一条竖直渐近线。
次序不能反:先算 再算 。跳过第一步直接算 只在斜率恰为 时凑对,斜率是别的值时两个极限都发散。
「渐近线是碰不到的」这句流传很广的话并不成立。 的水平渐近线是 ,而曲线在每个 处都与它相交,交点有无穷多个。渐近线约束的只是距离的极限行为,对曲线在有限范围内是否与它相交不作任何断言,这一点与切线的极限定义同源(见 导数的几何意义与切线方程)。
4 · 作图的次序
把前面几项汇成一条流水线,次序是有讲究的:定义域定下讨论的范围,奇偶性与周期性把工作量对折,零点与极值给出骨架,凹凸与拐点决定骨架之间怎么连,渐近线管住无穷远与间断点附近。描点排在最后,作用是确认而非猜测。
- 定义域。分母不为零、偶次根号内非负、对数的真数为正,先把不能取的点挖掉。
- 奇偶性与周期性。 只画右半再对称过去; 只画一个周期。
- 零点与函数值的符号。解 ,定出曲线穿过横轴的位置。
- 求 ,解 ,定单调区间与极值。
- 求 ,解 并检查两侧符号,定凹凸区间与拐点。
- 求各类渐近线,再补几个关键点连成曲线。
例 4.1 作 的图象。定义域为 ; 与 无对称关系,非奇非偶。零点只有 ,且 时 、 时 。求导得 ,驻点 , 在其左为正右为负, 是极大值。再求 ,零点 处 由负变正,拐点为 :曲线在 上上凸、在 上下凸。 时 , 是右侧的水平渐近线; 时 ,左侧无渐近线。至此形状已定:从左下方陡峭地升上来,在 处到达最高点 ,随后下降, 之后转为下凸并贴着横轴趋近于零。
极大值点 与拐点 分居两处,这是本例值得留意的地方——曲线在 之后开始下降,但下降本身还在加速;直到 才转为减速,此后越走越平。只看 得不到这段区别。
5 · 数值上的二阶导数
core/shape.ts 的 secondDiff 用二阶中心差商算
:
步长的取法与一阶差商不同。一阶中心差商在 附近最准(见 平均变化率与导数的定义 的收敛表),二阶必须放大到 :分子里三个量级相同的数相加减,剩下的舍入残渣约为一个机器 ,除以 后被放大成 ;截断误差仍是 ,两者在 处交汇。实测 于 : 时误差 , 时 , 时 ,两侧都变差。
再小就只剩噪声。 时算出 ,这个数恰是 ;换成 得 ,换成 分子干脆是精确的 ,二阶差商报出 而真值是 。三个函数给出三个「答案」,它们只反映浮点数最后一位的舍入量,与被求导的函数无关。
拐点的判别也踩过一次。d2Zeros 先取
的零点,再在每个零点左右各取一个探测点看符号。取
并把
压到
,两个真拐点相距只有
,零点检测除了这两个还会在它们中间多报一个
——那是重根检测顺带捞上来的。变号判别把它挡住了:
两侧的
同为
,同号即不是拐点。若判据写成「零点即拐点」,这一族在
极小时会多出一个假拐点。
竖直渐近线附近还有一处更隐蔽的坑。rootsOf 的收敛阈值取网格上
最大值的
倍,是个相对量;一旦区间里含着极点,这个基准就被撑到毫无意义的大小。把
的
直接交给
上的 rootsOf,阈值被撑到
,而
恰好差一点没越过它,两个视窗端点被报成零点;同一个函数换到
则一个零点也不报。现在的做法是先按挖去点把区间断开,逐段调用,极点不再进入任何一段的采样。
6 · 参考文献
- Convex function. Wikipedia. 凸性的多种等价定义,含二阶导数判据与中点形式。https://en.wikipedia.org/wiki/Convex_function
- Inflection point. Wikipedia. 拐点的定义、必要条件与 一类反例。https://en.wikipedia.org/wiki/Inflection_point
- Asymptote. Wikipedia. 三类渐近线的定义与斜渐近线的两次极限求法。https://en.wikipedia.org/wiki/Asymptote
- Finite difference coefficient. Wikipedia. 二阶中心差商的系数与误差量级。https://en.wikipedia.org/wiki/Finite_difference_coefficient
- Numerical differentiation. Wikipedia. 步长在截断误差与舍入误差之间的取舍。https://en.wikipedia.org/wiki/Numerical_differentiation