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

斜率、速度,与平均变化率

你在代数里早就认识斜率了——纵向变化除以横向变化,衡量一条直线有多陡。微积分正是从一个普通斜率回答不了的、挥之不去的问题中长出来的:某样东西**此刻**、在某一个瞬间,变化得有多快?这篇导读拿起「平均速度」和「平均陡度」这些熟悉的想法,把它们推到几乎崩裂,再让你清楚看见极限正是为了填补哪一道缝隙才被发明出来。

斜率,你早已拥有的那个想法

想象一条笔直的路爬上山坡。你每往前走10米,就升高2米。这个比值——纵向变化除以横向变化,这里是2/10——就是斜率:一个数字,说明这条线有多陡。路越陡,数字越大;平路,斜率为零;下坡,斜率为负。早在有人说出*微积分*这个词之前,你就在代数里见过它,而它正是整门学科赖以生长的种子。

同样的算术能描述任何一种变化,不只是山坡。如果一个[[function-calculus|函数]] f 告诉你某个量在每个输入处的值——账户里的钱随月份变化、走过的距离随秒数变化——那么它两点之间的斜率,就是[[rate-of-change|平均变化率]]:输出移动了多少,除以输入移动了多少。对一条直线,这个数字处处不变。对一条曲线,它就变了,而正是这一个事实,让故事开始变得有趣。

把平均变化率写下来

取一个函数 f 和两个输入 a 与 b。a 处的点位于高度 f(a),b 处的点位于高度 f(b)。把这两点连成一条直线——它穿切过曲线,所以叫作割线(取自拉丁文的*切割*之意)。它的斜率就是 f 从 a 到 b 的[[rate-of-change|平均变化率]],公式不过又是纵向除以横向:

average rate of change  =  ( f(b) - f(a) ) / ( b - a )

Example:  f(x) = x^2,   from a = 1 to b = 3
   f(3) - f(1)     9 - 1      8
  -------------  = -------  =  ---  =  4
     3 - 1          3 - 1      2
穿过 (a, f(a)) 与 (b, f(b)) 两点的割线的斜率。在 x = 1 到 x = 3 之间,曲线 y = x^2 平均每横向移动一个单位,就升高 4 个单位。

所有例子里最熟悉的,是运动。如果 f(t) 是一辆车到时刻 t 为止走过的距离,那么 ( f(b) - f(a) ) / ( b - a ) 就是总距离除以总时间——也就是朴素的平均速度。两小时开了120公里,你的平均速度就是每小时60公里,无论这趟旅程实际上是怎么开的。

平均答不上来的那个问题

现在瞥一眼你的车速表。它显示的不是*整趟旅程*的60公里每小时——它显示的是你此时此刻开得有多快,而且你一碰油门它就变。这是一个全然不同的量:不是两小时里平均出来的速度,而是某一个时间点上的速度,那一刻根本没有时间流逝。这正是微积分为之而生的问题——而请注意,我们的公式在它面前噎住了。

试着把 b 设得等于 a,去算单一瞬间的速度。横向 b - a 变成了0,纵向 f(b) - f(a) 也变成了0。公式塌缩成 0/0——毫无意义。单一瞬间只是一个点,而你没法只穿过一个点画出割线;要有斜率,你至少需要两个点。所以与其去要求那不可能之事,我们改用一招更聪明的:让 b 离 a *稍微*有点距离,然后把它越挪越近,盯着割线的斜率会怎么变。

  1. 锁定你关心的那一瞬间——比如曲线 f(x) = x^2 上的 a = 1。
  2. 选一个离它一小步的第二点 b,算出割线斜率 ( f(b) - f(1) ) / ( b - 1 )。
  3. 把 b 挪得更靠近1——试 1.1,再试 1.01,再试 1.001——每次都重新算一遍。
  4. 看这些斜率是否朝着某一个数字归拢。如果是,这个数字就是瞬时变化率。

看着割线斜率安顿下来

我们就真的为 f(x) = x^2 在 a = 1 处做一遍这个实验。我们绝不把 b 设得正好等于1——那会给出 0/0——而是让它一点点逼近,把每一次的割线斜率记下来。几行算术就让这个规律藏不住了。

def f(x):
    return x * x

a = 1.0
for b in [2.0, 1.5, 1.1, 1.01, 1.001, 1.0001]:
    secant_slope = (f(b) - f(a)) / (b - a)
    print(b, secant_slope)

# b        secant slope
# 2.0      3.0
# 1.5      2.5
# 1.1      2.1
# 1.01     2.01
# 1.001    2.001
# 1.0001   2.0001
随着 b 滑向1,割线斜率步步逼向2——始终不曾真正抵达,却无止境地靠近。我们说,当 b 趋于1时,割线斜率**趋于2**。

看看刚才发生了什么。我们从来无法直接代入 b = 1,可这些斜率对自己要去往哪里毫不含糊:2。那个目标值——当两点挤到一起时割线斜率所趋向的数字——就是我们很快要称之为[[limit|极限]]的东西。它们安顿下来的那个斜率,就是恰好在那一个点上轻擦过曲线的[[tangent-line|切线]]的斜率,而它*就是*瞬时变化率。把这套构造推到它的极限,整件事就成了[[derivative-calculus|导数]]——下一条学习线的引擎。