§27-1  導數

差商是一個算得出來的量,可是它在 c 這一點本身沒有定義。要怎麼用它定出一個只屬於 c 的數?而這個數一旦存在,會不會反過來要求函數在那裡連續?

變化率怎麼寫成定義

腳踏車從坡頂滑下來,前十秒走了 20 公尺,接下來十秒走了 35 公尺。旁邊的人問:它在第 12 秒有多快?手上能算的卻只有一段一段的平均——量任何速度都得先有兩個時刻相減,可是「某一刻的快慢」只給我們一個時刻。

常見的辦法是把那一段時間縮短:從第 12 秒量到第 13 秒、量到第 12.1 秒、量到第 12.01 秒,看看算出來的平均往哪裡靠。這個做法很自然,可是它不能一路縮到底——時間差一旦真的變成零,距離差也是零,而 0/0 什麼都不是。所以「縮到底」不能照字面執行,得換個說法。

換的說法我們已經很熟:不要求算出 那一刻 的值,只要求有一個數,讓平均在時間差夠小的時候與它相差夠少;而「夠少」由對方指定,「夠小」由我們回答。把腳踏車換成一般的函數 f、把時刻換成定義域裡的一點 c,那個一段一段的平均就是

(f(x) − f(c))/(x − c),

它有一個現成的名字:差商(difference quotient)。差商在 x ≠ c 的每一點都算得出來,在 x = c 那一點沒有定義——下面這張圖先把它的幾何意思擺出來。

f(c) f(x) c x y = f(x) 割線的極限 割線的斜率就是差商

這張圖在說差商量的是什麼:藍色那條直線穿過圖形上的兩個點,它的斜率就是差商——高度差除以橫向差。兩個點越靠越近時,藍線會往紅色虛線那個位置轉過去,可是兩點重合的那一瞬間藍線根本畫不出來(兩個點決定不了一條線)。定義要捕捉的正是紅線的斜率,而捕捉的方式不能是「讓兩點重合」。

27.1  DEFINITION
Assume that c lies in D and is a cluster point of D.
Call a real number L the derivative of f at c provided that to each ε > 0 there corresponds a δ(ε) > 0 for which every x ∈ D with 0 < |x − c| < δ(ε) satisfies
  |(f(x) − f(c))/(x − c) − L| < ε.
The number L is then denoted by f′(c).
兩個前提各有各的分工。c ∈ D 是為了讓 f(c) 寫得出來——差商裡有這一項,少了它整個式子無從談起。c 是 §10-2 的 10.3 說的 cluster point(c 的每一個 neighborhood 裡都還有 D 中異於 c 的點),則是為了讓「要多靠近 c 就有多靠近」的地方永遠還有點可以代進差商。定義並沒有要求 c 是內點,所以區間的端點也問得出導數,只是那時 x 只能從一側靠過來。
正例:D = ℝ、f(x) = 3x + 1、c = 2。差商恆等於 3,誤差永遠是零,所以不管對方給多小的 ε,回答 δ(ε) = 1 都過關,f′(2) = 3。反例:D = [0, 1] ∪ {5}、c = 5。這個 c 屬於 D,卻不是 D 的 cluster point——取 δ = 1,滿足 0 < |x − 5| < 1 的 x ∈ D 一個也沒有,於是那條不等式對每一個實數 L 都空著成立,f′(5) 要多少有多少。定義裡的 cluster point 擋的就是這件事。
同一件事還有第二種寫法。把差商看成 x 的一個函數(定義域是 D 去掉 c),27.1 要求的正是 §25-1 的 25.1 的 deleted limit:
  f′(c) = limₓ→c (f(x) − f(c))/(x − c)(x ∈ D、x ≠ c)。
兩種寫法字面不同,要檢查的事一模一樣;25.1 全篇假設 c 是 cluster point,也正是 27.1 把這一條寫進前提的原因。
0 1 5 δ 定義域的一段 孤立的點 這個圈裡沒有別的定義域點

這張圖在說 cluster point 這個前提在防什麼:右邊那一點屬於定義域,可是把圈子畫成半徑 1,圈裡除了它自己一個定義域的點都沒有。於是「代進差商檢查一下」這個動作根本執行不了,條件無事可做地成立,任何數都成了導數。左邊那一段就不會有這個問題——不論圈子縮得多小,圈裡永遠還有別的點。

定義寫好之後,先用兩個算得動的例子把它跑一遍。第一個挑差商化簡得掉的函數,看看整套流程的骨架;第二個挑一個在端點上會出事的函數,看看「問得出來」與「答得出來」是兩回事。

例 1從定義算 x² 的導數
27.1 只說「若有一個實數 L 滿足⋯」,沒有說 L 從哪裡來。第一次動手,怎麼把它找出來又驗證它?
  1. 令 D = ℝ、f(x) = x²,任取 c ∈ ℝ。ℝ 的每一點都是 ℝ 的 cluster point,27.1 的兩個前提都齊了。
  2. 先化簡差商。x ≠ c 時分子分母都含 x − c:
      (x² − c²)/(x − c) = (x + c)(x − c)/(x − c) = x + c。
    差商在 c 以外就是一條直線。
  3. 猜 L。直線 x + c 在 x = c 的那一格填 2c 最順,於是猜 L = 2c,並算出誤差:
      |(x + c) − 2c| = |x − c|。
  4. 驗證。對方給 ε > 0,我們回答 δ(ε) = ε。因為 0 < |x − c| < δ(ε) 時誤差恰好就是 |x − c|,所以誤差 < ε,條件成立。
  5. 拿數字對一次:c = 3、ε = 0.01 時 δ = 0.01。取 x = 3.004,差商是 3.004 + 3 = 6.004,與 2c = 6 相差 0.004,確實小於 0.01。
f′(c) = 2c 對每個 c ∈ ℝ 成立。這是最省力的一種情形:差商化簡之後誤差直接等於 |x − c|,根本不必做任何估計,δ 與 ε 一比一對應。多數函數沒有這麼客氣,下一個例子就得動手估。
2c c x 差商 = x + c 挖掉這一點

這張圖在說例 1 為什麼一步就過關:畫的不是 x² 的圖形,而是差商本身當成 x 的函數的圖形——它是一條直線,只在 x = c 那一點被挖空。定義要找的 L 就是把那個空洞補起來的高度 2c,而直線上的點離空洞多遠,函數值就離 2c 多遠,這正是 δ(ε) = ε 的來由。

例 2√x 在正點可微,在端點 0 問得出卻答不出
27.1 允許 c 是端點。那麼把定義域取成 [0, ∞) 再問 √x 在 0 的導數,會得到什麼?
  1. 令 D = [0, ∞)、f(x) = √x。先看 c > 0。差商的分母含 x − c,把它有理化:
      x − c = (√x − √c)(√x + √c),
    所以 x ≠ c 時 (√x − √c)/(x − c) = 1/(√x + √c)。
  2. 猜 L = 1/(2√c)(把 x 換成 c 代進上式),並算誤差。通分之後
      |1/(√x + √c) − 1/(2√c)| = |√c − √x| / (2√c(√x + √c)),
    再把 |√c − √x| = |x − c|/(√x + √c) 代進去,得
      誤差 = |x − c| / (2√c (√x + √c)²)。
  3. 估分母。因為 x ≥ 0,所以 (√x + √c)² ≥ c,於是 誤差 ≤ |x − c| / (2c√c)。對方給 ε > 0 時回答 δ(ε) = 2c√c · ε 就交差:f′(c) = 1/(2√c)。
  4. 換到端點。0 ∈ D,而且 0 的每個 neighborhood 都含 D 裡的正數,所以 0 是 D 的 cluster point,27.1 問得出來。此時差商是 (√x − 0)/(x − 0) = 1/√x——只能從右邊靠近,因為 D 在左邊沒有點。
  5. 證明沒有 L 合格。取 ε = 1,並隨便給一個 δ > 0 與一個候選的 L。由 §6-3 的 6.6 Archimedean 性質(ℕ 在 ℝ 中沒有上界),取得到自然數 n 同時大於 |L| + 1 與 1/√δ。
  6. 令 x = 1/n²。由於 n > 1/√δ,所以 x < δ;又 x > 0,於是 x ∈ D 且 0 < |x − 0| < δ,這個見證點確實合法。它的差商是 1/√x = n,而 §5-4 的 5.12 三角不等式給出 |n − L| ≥ n − |L| > 1 = ε。條件垮掉。
√x 在每個 c > 0 可微,導數是 1/(2√c);在 0 這個端點,導數問得出來卻答不出來,因為差商 1/√x 超得過任何事先給定的數。端點問得出導數是定義給的權利,不是答案存在的保證。
y = √x c 這條越來越陡 靠近 0 時差商要多大有多大

這張圖在說例 2 的兩半為什麼結果相反:在 c > 0 的地方(藍點),曲線的傾斜程度是有限的,割線靠過去時斜率穩定地收到 1/(2√c)。可是從原點拉出去的那條紅色割線,取的點越靠近原點就越陡,斜率一路衝過任何事先寫下的數——所以那裡沒有任何一個實數當得成導數。

兩個例子都算出了導數(或確認算不出),可是還沒問一個更基本的問題:一個點上有導數,這件事對函數本身有什麼要求?下面這條引理給出答案,而且答案是單向的。

27.2  LEMMA
If f has a derivative at c, then f is continuous at c.
關鍵在於把「值的差」拆成「差商乘上 |x − c|」:f(x) − f(c) 就等於差商乘回 x − c。既然差商離 f′(c) 不遠、因此本身有界,整個乘積就被 |x − c| 壓得下去。反過來不成立——§20-1 的 20.1 的連續只要求值靠得近,不要求靠近的速度跟得上 |x − c|,而 27.1 要求的正是後者。
正例:f(x) = x² 在 c = 3 有導數 6(例 1),所以它在 3 連續——不必再另外驗一次連續。反例:把箭頭反過來就不成立,f(x) = |x| 在 0 連續,卻沒有導數(例 3)。可微是比連續更嚴的要求,27.2 只能往一個方向走。
PROOF

手上是 27.1 給的一句「對每個 ε 都有一個 δ」,要的是 20.1 給連續的同一種句子。兩句話的量詞形狀一樣,差別在被估計的東西:定義管的是差商的誤差,結論要的是函數值的誤差。

證明計畫 · 由所求想起
所求是讓 |f(x) − f(c)| 小,而它等於差商乘上 |x − c|。乘積的兩個因子分工:一個要有界,一個要能任意小。
第一步:把定義用在一個固定的誤差上(取 1),換來差商的一個與結論無關的上界。
第二步:用三角不等式把「差商離 f′(c) 不到 1」翻成「差商的絕對值有上界」。
第三步:兩邊乘上 |x − c|,再把 |x − c| 取得夠小,把乘積壓到對方要求的誤差以下。

Proof.  Apply 27.1 with ε = 1: there is a δ > 0 such that
  |(f(x) − f(c))/(x − c) − f′(c)| < 1
for every x ∈ D with 0 < |x − c| < δ.
這一步的所求:一個與後面那個 ε 完全無關的固定上界。27.1 的條件對每一個正數都成立,所以把它用在 1 上完全合法,換回來一個只跟 c 有關的 δ。挑 1 沒有任何深意,重點是它是常數——如果這裡就把待證的 ε 代進去,得到的上界會跟著 ε 一起變動,等一下乘上 |x − c| 之後估計就繞回原地。要記住這條不等式只對「離 c 不到 δ、而且不等於 c」的定義域點成立,後面每次引用都受這個限制。
Since |A| − |B| ≤ |A − B| for all real A, B by 5.12, these x satisfy
  |(f(x) − f(c))/(x − c)| < |f′(c)| + 1.
Multiplying by |x − c| gives |f(x) − f(c)| ≤ |x − c| (|f′(c)| + 1).
這一步的所求:把「差商的誤差小」換成「差商本身不大」。§5-4 的 5.12 三角不等式(和與差的絕對值被「絕對值的差」與「絕對值的和」上下夾住)給出 |A| − |B| ≤ |A − B|;把 A 取成差商、B 取成 f′(c),前一步的「小於 1」就翻成差商的絕對值小於 |f′(c)| + 1。接著乘上 |x − c| 是整段推理的樞紐:差商乘回 |x − c| 剛好還原成 |f(x) − f(c)|,於是「有界的量」乘上「可以任意小的量」就是可以任意小。不等號寫成 ≤ 而不是 <,是為了讓 x = c 也算數(那時兩邊都是零),這是邊界簿記,下一步會用到。
Now let ε > 0 be given and put δ(ε) = inf {δ, ε/(|f′(c)| + 1)}. Because |f′(c)| + 1 > 0, every x ∈ D with |x − c| < δ(ε) satisfies |f(x) − f(c)| < ε. Therefore f is continuous at c.
這一步的所求:把 20.1 要的那句話原封交出去。§20-1 的 20.1 要求對每個誤差都找得到 c 的一個範圍,使範圍內的定義域點的值都離 f(c) 不超過那個誤差。取 inf 是因為兩個條件得同時滿足:不超過 δ 才用得上前一步的估計,不超過 ε 除以那個上界才把乘積壓到 ε 以下。分母寫成 |f′(c)| + 1 而不是 |f′(c)|,是因為導數可以是零,除以零這一格必須事先避開——多出來的那個 1 從第一步一路跟到這裡,正是它讓分母永遠是正數。x = c 的那一格左邊是零,當然小於 ε,這是例行核對。
有導數的點必定連續。∎
(c, f(c)) 圖形困在裡面 兩條邊的斜率 |f′(c)| + 1

這張圖在說證明第二步造出來的那個估計長什麼樣:|f(x) − f(c)| ≤ |x − c| (|f′(c)| + 1) 的幾何意思,就是圖形被關在以 (c, f(c)) 為頂點、斜率為 ±(|f′(c)| + 1) 的兩條紅線之間。兩條線在頂點處收成一個點,所以只要橫向靠得夠近,縱向的差距自動被夾到任何指定的範圍內——這就是連續。

例 3|x| 在 0 連續,卻沒有導數
27.2 說可微推得出連續。反過來呢——連續的點是不是也一定有導數?
  1. 令 D = ℝ、f(x) = |x|、c = 0。因為 f(0) = 0,差商是 |x|/x。
  2. 算出它的兩種值。x > 0 時 |x| = x,差商是 1;x < 0 時 |x| = −x,差商是 −1。差商只有這兩個值,而且兩個值在 0 的任何一側都各自出現無限多次。
  3. 取 ε = 1,假設某個 L 合格。那麼存在 δ > 0,使 0 < |x| < δ 的每個 x 都滿足「差商與 L 相差小於 1」。取 x = δ/2 得 |1 − L| < 1,取 x = −δ/2 得 |−1 − L| < 1。兩個見證點都落在 D = ℝ 裡,取法合法。
  4. 兩式相加即出矛盾。由 §5-4 的 5.12 三角不等式,
      2 = |(1 − L) + (L + 1)| ≤ |1 − L| + |L + 1| < 2。
    因為 2 < 2 不可能,所以沒有任何 L 合格,f′(0) 不存在。
  5. 另一方面它在 0 連續。恆等函數 x ↦ x 處處連續(對方給 ε,回答 δ = ε 即可),而 §20-5 的 20.7 說取絕對值保連續,於是 |x| 也處處連續。
  6. 0 以外沒事:c > 0 時 c 附近的差商恆為 1,c < 0 時恆為 −1,所以 f′(c) 分別是 1 與 −1。壞掉的只有原點這一點。
連續不蘊涵可微,所以 27.2 的箭頭真的只能往一個方向走。差在哪裡?連續只要求 f(x) 靠近 f(c),至於用什麼方式靠近它不管;可微則進一步要求「靠近的速率」本身也收得住,而 |x| 在原點兩側的速率一個是 1、一個是 −1,談不攏。
1 −1 差商 = 1 差商 = −1 任何 δ 之內兩種值都出現

這張圖在說例 3 的矛盾從哪裡來:畫的是差商本身,它只取 1 與 −1 兩個值,中間沒有過渡。不論把灰色虛線之間那條帶子縮得多窄,帶子裡兩種值都在,於是任何候選的 L 都得同時離 1 與 −1 不到 1——這兩件事湊不到一起。對照例 1 的圖:那裡只挖掉一點,這裡是整條斷開。

例 4處處連續、處處沒有導數的函數存在
例 3 的壞點只有一個。壞點可以有多少個——有沒有可能整條線上一個好點都不剩?
  1. 壞點可以有很多個。把例 3 的函數平移再相加,例如 f(x) = |x| + |x − 1| + |x − 2|,它處處連續,而在 0、1、2 這三點各壞一次,其餘每一點都有導數。想要幾個壞點就放幾個。
  2. 把壞點排成一列(例如所有的 1/n),配上一列越來越小的係數,同樣的手法也做得出來——壞點可以是可數無限多個。
  3. 這樣造出來的函數,壞點仍然是少數:把它們挑掉之後,剩下的每一點都有導數。到這裡為止,連續與可微的差距看起來像是「幾個孤立的破洞」。
  4. 1872 年 Weierstrass 給出的例子把這個印象推翻了:一個在每一點都連續、而在每一點都沒有導數的函數。它的圖形無法照著畫——不論放大到什麼倍率,看到的都還是抖動的折線。
  5. 造法是把一列連續函數疊起來,而且兩個要求互相拉扯:後面的函數振幅一次比一次小,疊出來的東西才連續得起來;它的轉折卻一次比一次密,才能讓每一點附近永遠有更陡的鋸齒把差商甩開。寫成式子是一個無窮級數,要等級數的工具備齊才交代得完整,這裡先記一筆。
連續與可微的差距不是幾個孤立的壞點可以概括的——它可以差到處處都差。回頭看 27.2:它保證的那個方向是真的,可是反過來的那一句不但不成立,而且錯得很徹底。
放大這一段 原尺度 放大之後還是抖

這張圖在說例 4 的函數為什麼每一點都沒有導數:導數存在的意思是割線的斜率靠得攏,也就是圖形在夠小的尺度下看起來夠像一條直線。而這個函數不論放大幾次都還是折線——紅框裡那一小段放大之後,抖動的密度與陡度都沒有變少,於是每一點附近都找得到讓差商跳開的 x。(這是示意圖,真正的構造要等級數的工具。)

—— 第一階段到此結束 ——

本篇把「某一刻變多快」寫成了可以逐項驗證的定義(27.1):差商在 c 這一點沒有定義,可是它在 c 附近的值可以被一個實數逼近,那個實數就是導數;c 得是 cluster point,否則條件空著成立,導數不唯一。27.2 說有導數的點必定連續,而例 3 與例 4 說反過來不成立,還差得很遠。下一篇 §27-2 要問的是:導數是一個點上的數,它管不管得到那一點附近的值?先站起來走幾步、把肩膀伸展開再回來。

順帶一提:絕對值函數去應徵「可微」這個職位,面試官問它在 0 的導數是多少,它說「看你從哪一邊走過來」——結果沒錄取。