JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

导数:瞬时变化率

在某一个精确的瞬间,而不是在一段时间里,一个东西变化得有多快?看着平均变化率一点点收紧到单独一个点,最后变成**导数**——也就是曲线在你所站之处的斜率。

从平均速度到某一瞬间

想象你从家开车去 60 公里外的一家店,花了一个小时。你的平均速度是 60 公里/时——总路程除以总时间。但这个单一的数字把途中真正发生的一切都藏了起来:你加过速、为红灯减过速,也许还彻底停过。导数要回答的问题更尖锐:不是「平均有多快?」,而是「就在此刻、在这一个瞬间到底有多快?」——也就是你的车速表显示的那个数。

诚实的窍门在这里。一个瞬间没有时长,所以你没法用距离去除以零时间。换个做法:你在一个极小的时间窗里测平均变化率——比如在时刻 t 和紧随其后的一刻 t+h 之间——然后让这个时间窗一点点缩到几乎为零。这些平均值会朝着同一个数稳定下来,而这个「稳定下来」正是一个极限。导数就是这个极限。

差商与切线

现在把脑海里的那条路换成函数 f 的图像。在曲线上取一个横坐标为 x 的点,再在它右边一点点、横坐标为 x+h 的地方取第二个点。过这两点画一条直线——一条割线。它的斜率就是「竖直变化量除以水平变化量」:(f(x+h) - f(x)) / h。这个分式叫做差商,它其实就是穿上了图像外衣的平均变化率。

现在让第二个点朝第一个点滑过去,也就是让 h 缩到 0。割线随之转动,在极限处它只在一个地方贴着曲线:切线。这条切线的斜率就是导数。用符号写:f'(x) = lim h->0 (f(x+h) - f(x)) / h。这一个公式,就是你后面一切内容赖以建立的定义。

f'(x) = lim h->0  ( f(x+h) - f(x) ) / h

        rise        f(x+h) - f(x)
slope = ----  =  ------------------
        run               h
导数是差商的极限——当第二个点滑近时割线斜率趋近的值。

动手算一个:f(x) = x^2

我们就老老实实地、用手按定义算一遍,把这层神秘感揭开。取 f(x) = x^2,照着步骤走。代数运算很温和,看着那些 h 互相抵消,正是这整件事的关键所在。

  1. 写出差商:( f(x+h) - f(x) ) / h = ( (x+h)^2 - x^2 ) / h。
  2. 把分子展开:(x+h)^2 = x^2 + 2xh + h^2,于是分子变成 2xh + h^2(x^2 抵消了)。
  3. 除以 h(这一步合法,因为此时 h 还不是 0):(2xh + h^2) / h = 2x + h。
  4. 现在取 h->0 的极限:2x + h -> 2x。所以 f'(x) = 2x。

把答案当成一句话来读:对于抛物线 y = x^2,在任意点 x 处的陡峭程度是 2x。在 x = 0 处斜率为 0(碗底是平的);在 x = 3 处斜率为 6(正陡峭地往上爬)。一个公式 f'(x) = 2x,就一口气告诉了你每一处的切线斜率。

光滑、尖角,与一次数值验算

导数只存在于曲线足够光滑、能画出唯一一条清晰切线的地方。这个性质叫做可微性。函数在哪里可微,它在那里就一定也连续——没有跳跃也没有缺口——因为你没法跨过一个断口去取一个有意义的极限。但反过来不成立:一个函数可以是连续的,却仍然没有导数。

经典的例子是 f(x) = |x|,也就是绝对值的 V 字形,在 x = 0 处。它在那里完全连续——图像从不离开纸面。但它有一个尖锐的尖角:从左边悄悄靠近,斜率是 -1;从右边悄悄靠近,斜率是 +1。差商的两个单侧极限对不上,所以极限不存在,于是也就没有唯一的切线。在尖角处,导数干脆就没有定义。

def numeric_derivative(f, x, h=1e-6):
    # approximate f'(x) with a tiny but nonzero h
    return (f(x + h) - f(x)) / h

f = lambda x: x**2
print(numeric_derivative(f, 3))   # ~ 6.0, matching f'(x) = 2x at x = 3
计算机没法取真正的极限,于是它挑一个小小的 h,直接算差商——结果非常接近精确答案 2x。