数学 / 导数 · 从变化率到极值与不等式 / 导数的几何意义与切线方程 待审核 2 / 8
在某点处 · 过某点

导数的几何意义与切线方程

割线斜率的极限是一个数,这个数同时也是一条直线的斜率:h0h \to 0 时割线绕着定点 (x0,f(x0))(x_0, f(x_0)) 转动,它的极限位置就是曲线在该点的切线。导数由此获得几何意义——f(x0)f'(x_0) 是切线的斜率,而切线方程随之可写。

1 · 切线的定义之变

初中定义圆的切线为「与圆只有一个公共点的直线」。这个定义在一般曲线上立刻失效:y=x3y = x^3x0=1x_0 = 1 处的切线 y=3x2y = 3x - 2 与曲线还交于 x=2x = -2,公共点有两个;而 y=xy = x 与抛物线 y=x2y = x^2 交于两点却不是切线。

微积分改用极限来定义:过 (x0,f(x0))(x_0, f(x_0)) 与邻近点 (x0+h,f(x0+h))(x_0 + h, f(x_0 + h)) 作割线,若 h0h \to 0 时割线的斜率有极限 f(x0)f'(x_0),则过 (x0,f(x0))(x_0, f(x_0)) 且斜率为 f(x0)f'(x_0) 的直线是曲线在该点的切线。定义只约束切点附近的局部行为,对曲线在远处如何走向不作任何断言。

定义 1.1(切线)ffx0x_0 处可导。曲线 y=f(x)y = f(x) 在点 (x0,f(x0))(x_0, f(x_0)) 处的切线是过该点、斜率为 f(x0)f'(x_0) 的直线,其方程为 yf(x0)=f(x0)(xx0)y - f(x_0) = f'(x_0)(x - x_0)

2 · 切线方程与切点之外的公共点

点斜式给出的方程整理后即 y=f(x0)x+(f(x0)f(x0)x0)y = f'(x_0) \cdot x + \bigl(f(x_0) - f'(x_0) x_0\bigr)。以 f(x)=x3f(x) = x^3x0=1x_0 = 1 为例:f(1)=1f(1) = 1f(1)=3f'(1) = 3,切线为 y=3x2y = 3x - 2。它与曲线的公共点由 x33x+2=0x^3 - 3x + 2 = 0 给出,即 (x1)2(x+2)=0(x - 1)^2 (x + 2) = 0,切点 x=1x = 1 是二重根,另有单根 x=2x = -2

切线与曲线相切的代数特征正是这个二重根:差函数 f(x)(f(x0)(xx0)+f(x0))f(x) - \bigl(f'(x_0)(x - x_0) + f(x_0)\bigr) 在切点处函数值与导数值同时为零。x0=0x_0 = 0 时更极端,切线 y=0y = 0 直接穿过曲线,切点两侧曲线分居切线上下。

图 2-1 · 切线与它同曲线的公共点。在某点处一栏拖动切点,空心点标出切点之外的公共点;过某点一栏拖动定点 PP,图上给出全部切线与对应的切点。

3 · 切点未知的一类问题

设切点为 t

「求过点 P(p,q)P(p, q) 的切线」与「求在 x0x_0 处的切线」是两类问题。后者切点已给定,代公式即可;前者只知道切线经过 PP,切点是未知数。设切点横坐标为 tt,切线方程为 y=f(t)(xt)+f(t)y = f'(t)(x - t) + f(t),代入 PP

f(t)+f(t)(pt)=qf(t) + f'(t)\,(p - t) = q

这是关于 tt 的方程,每个根给出一条切线。f(x)=x2f(x) = x^2 与点 P(0,1)P(0, -1):方程化为 t2+1=0-t^2 + 1 = 0,得 t=±1t = \pm 1,两条切线 y=2x1y = 2x - 1y=2x1y = -2x - 1

警示 · 点落在曲线上并不意味着只有一条切线,也不意味着切点就是该点。f(x)=x3f(x) = x^3 与点 P(1,1)P(1, 1):方程化为 2t3+3t21=0-2t^3 + 3t^2 - 1 = 0,即 (t1)2(2t+1)=0-(t - 1)^2 (2t + 1) = 0,除 t=1t = 1 外还有 t=12t = -\frac{1}{2}。后者给出的切线 y=34x+14y = \frac{3}{4}x + \frac{1}{4} 切于 (12,18)\bigl(-\frac{1}{2}, -\frac{1}{8}\bigr),而它同样穿过 PP。把「过 PP 的切线」直接按「在 PP 处的切线」处理会漏掉这一条。

4 · 二重根在数值实现里的位置

tt 的方程 (t1)2(2t+1)=0-(t - 1)^2(2t + 1) = 0t=1t = 1 处不变号:tt0.90.9 增到 1.11.1,方程左端的值先增到 00 再回落,符号始终不变。只按「相邻采样点异号」找根的实现会漏掉整个 t=1t = 1,恰好漏掉那条最容易验算的切线。core/calculus.tsrootsOf 因此在变号分支之外另设一支:把 g|g| 的局部极小用三分法细化,若细化后仍贴着零就算一个根。收敛判据取相对量,参照的是网格上 g|g| 的最大值——3x23x^2 这类量级小的导函数在绝对阈值下会被整体判为零。

同一支代码也解释了 meetsAgain 为何要按距离剔除切点:切点在差函数里本就是重根,rootsOf 一定会把它报出来,而调用方要的是「除切点之外还交于哪里」。x3x^3x0=1x_0 = 1 处,剔除后剩下的根算得 2-2,与因式分解的结果一致到打印精度。

5 · 参考文献

  1. Tangent. Wikipedia. 切线的极限定义、与「只有一个公共点」这一旧说法的分别。https://en.wikipedia.org/wiki/Tangent
  2. Tangent lines to circles. Wikipedia. 圆的切线性质,以及它为何不能推广成一般曲线的定义。https://en.wikipedia.org/wiki/Tangent_lines_to_circles
  3. Multiplicity (mathematics). Wikipedia. 重根的定义,以及相切与二重根的对应。https://en.wikipedia.org/wiki/Multiplicity_(mathematics)