單變數微積分 04 · 線性與二次近似、畫函數圖形
單變數微積分 04 · MIT 18.01 Lec 9–10

線性與二次近似、畫函數圖形

第二單元「導數的應用」從這裡開始。第一個應用是近似:在一點附近,曲線幾乎就是它的切線(線性近似),再精細一點是一條拋物線(二次近似)。Jerison 說這種看法「可能比到目前為止教的所有技術都重要」,因為工程上處處都在用。第二個應用是畫圖:用 \(f'\) 的正負看升降、用 \(f''\) 的正負看彎曲方向。

▶ Lec 9(47 分) ▶ Lec 10(52 分) 18.01SC session 23–28 預計閱讀 1.5–2 小時

讀完這頁你應該能夠

  1. 寫出線性近似 \(f(x)\approx f(x_0) + f'(x_0)(x - x_0)\),說明它就是切線,也就是「差商 ≈ 導數」的另一種寫法。
  2. 背出(或馬上推出)\(\sin x\)、\(\cos x\)、\(e^x\)、\(\ln(1+x)\)、\((1+x)^r\) 在 0 附近的線性和二次近似。
  3. 用代數把基本近似組合起來,並說明為什麼可以丟掉比要求更高次的項。
  4. 解釋二次近似裡那個 \(\frac12\) 從哪裡來,並推廣成 \(\frac{f^{(n)}(0)}{n!}\)。
  5. 用 \(f'\) 的正負判斷遞增遞減、用 \(f''\) 的正負判斷 concave up/down,找出 critical point 和 inflection point,畫出 \(3x - x^3\) 的圖。

前置知識檢查

1. \(\ln x\) 在 \(x = 1\) 的切線方程式是什麼?
點 \((1, 0)\)、斜率 \((\ln x)' = \frac1x = 1\),所以 \(y = x - 1\)。第 1 節的第一個例子就是它。
2. \(\frac{d}{dx}(1+x)^r\) 和 \(\frac{d^2}{dx^2}(1+x)^r\) 在 \(x = 0\) 各是多少?
\(r(1+x)^{r-1}\to r\);\(r(r-1)(1+x)^{r-2}\to r(r-1)\)。用的是第 03 頁證明的「任意實數次方」。
3. \((1 - 3x)(1 - \frac12x)\) 展開是什麼?
\(1 - 3x - \frac12x + \frac32x^2 = 1 - \frac72x + \frac32x^2\)。第 5 節會看到,做線性近似時最後那項可以直接丟掉。
4. \(x = 0.01\) 時,\(x^2\) 和 \(x^3\) 各是多少?
\(10^{-4}\) 和 \(10^{-6}\)。每多一次方,小數點就往後多兩位:這是「高次項可以忽略」的直覺來源。

00怎麼讀這一頁、素材對照

兩堂都是 Jerison。Lec 9 講線性近似和二次近似的開頭(第 1–7 節);Lec 10 前 29 分鐘把二次近似講完(第 7–9 節),後 22 分鐘開始畫圖(第 11–12 節)。畫圖的系統方法和有理函數的例子在 Lec 11,放在第 05 頁。第 10 節(Taylor 多項式)是 18.01SC 的例題,錄影沒有講。

素材對應內容
18.01 錄影Lec 9 線性近似、基本清單、GPS、二次近似;Lec 10 二次近似(續)、畫圖的開頭
18.01 講義(2006)Lecture 9「Linear and Quadratic Approximations」、Lecture 10「Curve Sketching」(離線包 lec9.pdf、lec10.pdf)
18.01SC session 23–28worked examples:\(\sin\) 的線性近似和計算機比較、乘積的線性近似、\(e^x\) 的二次近似、\(n\) 次近似的公式、三次函數的升降與凹凸(自我測驗用到);解題影片 Quadratic Approximation of an Exponential Function、Quadratic Approximation of a Product、Sketching a Curve
Strang Highlights of Calculus短片 Linear Approximation/Newton's Method(後半的 Newton 法在第 05 頁)
Strang Calculus第 3 章

01線性近似就是切線 Lec 9 1:12

整個主題一個公式就說完,但 Jerison 說要花至少半小時解釋怎麼用:

線性近似(x 在 x₀ 附近) $$f(x)\approx f(x_0) + f'(x_0)(x - x_0)$$

右邊就是 \(y = f(x)\) 在 \(x_0\) 的切線方程式。意思是:曲線在切點附近幾乎就是切線。1:42

手算:\(\ln x\) 在 \(x_0 = 1\)

\(f(1) = \ln1 = 0\),\(f'(1) = \frac11 = 1\)。代進去:\(\ln x\approx0 + 1\cdot(x - 1) = x - 1\)。3:20 Jerison 說 \(x_0 = 1\) 幾乎是唯一確定知道 \(\ln\) 值的地方。

檢查:\(\ln1.1 = 0.09531\),近似給 0.1;\(\ln2 = 0.693\),近似給 1,差很多。

關鍵限制:只在 \(x\) 靠近 \(x_0\) 時成立。離切點遠了,直線和曲線就分開了,曲線愛去哪就去哪。4:55 至於「多近才算近」,Jerison 說一部分要靠直覺,實際問題裡大家非常在乎這件事。11:26 第 8 節會給一個定量的說法。

02另一種讀法:差商 ≈ 導數 5:25

導數的定義是 \(\lim_{\Delta x\to0}\frac{\Delta f}{\Delta x}\)。第一單元我們把它倒過來讀,用已知的導數算極限。現在第三種讀法:\(\Delta x\) 很小但不是 0 的時候,差商已經很接近極限值了:6:26

$$\frac{\Delta f}{\Delta x}\approx f'(x_0)$$

左邊是平均變化率,右邊是瞬間變化率,兩者差不多。兩邊乘上 \(\Delta x\)、把 \(\Delta f = f(x) - f(x_0)\)、\(\Delta x = x - x_0\) 寫開,再把 \(f(x_0)\) 移到右邊,就是第 1 節的公式。7:34 兩種寫法在代數上完全相同。

一句話帶走:線性近似 = 切線 = 「\(\Delta f\approx f'(x_0)\,\Delta x\)」:輸入改變一點點,輸出的改變大約是導數乘上輸入的改變。

03基本清單(在 0 附近) 9:18

為了讓公式最簡單,標準清單一律取 \(x_0 = 0\):

$$f(x)\approx f(0) + f'(0)\,x\qquad(x\approx0)$$

做法是列一張表:每個函數算 \(f'\),再算 \(f(0)\)、\(f'(0)\),兩個數字就是近似式的兩個係數。11:56

f(x)f′(x)f(0)f′(0)線性近似(x ≈ 0)
\(\sin x\)\(\cos x\)01\(\sin x\approx x\)
\(\cos x\)\(-\sin x\)10\(\cos x\approx1\)
\(e^x\)\(e^x\)11\(e^x\approx1 + x\)
\(\ln(1+x)\)\(\frac1{1+x}\)01\(\ln(1+x)\approx x\)
\((1+x)^r\)\(r(1+x)^{r-1}\)1\(r\)\((1+x)^r\approx1 + rx\)

圖上的樣子:\(y = x\) 在原點貼著 \(\sin x\);\(\cos x\) 在 0 是山頂,切線水平,所以近似是常數 1;\(e^x\) 的切線是 \(y = 1 + x\)。14:36

為什麼寫成 ln(1 + x) 而不是 ln x

\(\ln x\) 在 0 跑到 \(-\infty\),\(x^r\) 在 0 的斜率可能是無窮大,0 是壞的基點。1 是好的基點,再平移一下讓它「看起來像 0」。19:02 第 1 節的 \(\ln u\approx u - 1\) 換成 \(u = 1 + x\),就是 \(\ln(1+x)\approx x\):同一個計算,只是換了變數。19:33

04難的換成簡單的 20:38

學生問:線性近似平常用來做什麼?Jerison 的第一個回答是 \(\ln1.1\approx\frac1{10}\)(用 \(\ln(1+x)\approx x\)、\(x = \frac1{10}\))。21:10

他接著問:左邊和右邊哪個比較複雜?左邊要按計算機,右邊是十分之一,誰都知道。22:12 清單裡每一行都一樣:左邊是難的函數,右邊是簡單的函數。\(\sin x\approx x\) 看起來右邊比較「醜」嗎?不,\(x\) 才是簡單的那個。線性近似的主要好處就是把難的東西換成簡單的東西;只要近似合理,問題就能往前推。22:43

05用代數組合近似 24:18

求 \(\dfrac{e^{-3x}}{\sqrt{1+x}}\) 在 \(x\approx0\) 的線性近似。Jerison 說:不做微積分,只用已經推出的清單,加上代數。25:21

三步
  1. 寫成乘積:\(e^{-3x}(1+x)^{-1/2}\),就看得出要用 \(r = -\frac12\)。
  2. 各自近似:\(e^{-3x}\approx1 - 3x\)(\(e^u\approx1 + u\),\(u = -3x\)),\((1+x)^{-1/2}\approx1 - \frac12x\)。
  3. 相乘,丟掉 \(x^2\) 項:
$$(1 - 3x)\left(1 - \tfrac12x\right) = 1 - \tfrac72x + \tfrac32x^2\approx1 - \tfrac72x$$

為什麼 \(\frac32x^2\) 要丟?因為從 \(e^{-3x}\) 換成 \(1 - 3x\) 的那一步,已經丟掉了一堆二次以上的項。\(\frac32x^2\) 不是唯一的二次項,只留它一個沒有意義;要丟就全部丟,只留下真正算對的線性部分。27:57 Jerison 說這種算術比一般代數還簡單:那一項連算都不用算。

學生問:直接算 \(f(0)\)、\(f'(0)\) 可以嗎?可以,\(f(0) = 1\),\(f'(0)\) 也一定是 \(-\frac72\),但用乘積規則微分很煩;到了二階導數,代數的方法遠比微分兩次好用。36:37 另一個學生問:微分的方法要不要丟 \(x^2\)?不用:二次項微分後還帶著 \(x\),代 \(x = 0\) 自己就消失了。高次項從來不影響線性的部分。37:38

數字檢查

\(x = 0.1\):真值 0.70634,線性近似 0.65,差 0.056;\(x = 0.01\):真值 0.965629,近似 0.965,差 0.00063。\(x\) 縮小 10 倍,誤差縮小約 90 倍(差不多 100 倍),正是「誤差像 \(x^2\)」。

2006 講義 Lecture 9 的同一個例子用 \(e^{-2x}\),答案 \(1 - \frac52x\);錄影用 \(e^{-3x}\)。本頁以錄影為準。

一句話帶走:複雜函數的近似 = 把各個因子換成清單裡的近似,相乘後只保留到你要的次數。

06真實的例子:GPS 29:30

GPS 衛星以速度 \(v\) 飛過,衛星上的鐘走了 \(T\),地面上的錶走了 \(T'\)。狹義相對論的時間膨脹公式是 30:37

$$T' = \frac{T}{\sqrt{1 - v^2/c^2}} = T\,(1 - u)^{-1/2},\qquad u = \frac{v^2}{c^2}$$

用 \((1+x)^r\approx1 + rx\)(\(x = -u\)、\(r = -\frac12\)):

$$T'\approx T\left(1 + \frac12\frac{v^2}{c^2}\right)$$

Jerison 強調:近似的對象不一定是 \(x\) 本身,可以是任何物理量,這裡是 \(\frac{v^2}{c^2}\)。31:43 GPS 衛星大約 4 km/s,光速 \(3\times10^5\) km/s,所以 \(\frac{v^2}{c^2}\approx10^{-10}\)。33:25 他說工程師真的用了這個計算:衛星發送的無線電頻率照這個規則刻意偏移。二次項是 \(u^2\sim10^{-20}\),完全可以忽略。34:26

Lec 10 的補充:重點是比例 Lec 10 1:34

改寫成相對變化:\(\frac{\Delta T}{T}\approx\frac12\frac{v^2}{c^2}\)。兩邊都沒有單位(時間除以時間、速度平方除以速度平方),重點是成正比,比例常數是 \(\frac12\)。2:34 Jerison 說為什麼不直接數值計算:工程上一個系統有幾十個這樣的因素(相對速度隨視角變、地球自轉、廣義相對論的重力效應),不把每一個都化簡成「輸入變一點、輸出按比例變」,根本沒辦法思考整個系統。天氣預報、經濟預測、小行星會不會撞地球都是這樣。4:40

背景補充:「誤差大概一毫米」是怎麼算的

Jerison 說這個差異換成定位誤差「大概一毫米」。33:55 用他的數字自己算:\(\frac12\frac{v^2}{c^2} = 8.9\times10^{-11}\)。訊號從約 20,200 km 高的衛星傳下來要 0.067 秒,這段時間裡兩邊的鐘只差 \(6\times10^{-12}\) 秒,乘上光速約 1.8 mm,和他說的一致。

但鐘的偏差會累積:一天 86,400 秒,累積 \(8.9\times10^{-11}\times86400\approx7.7\) 微秒,乘上光速約 2.3 km。所以衛星的頻率真的要預先校正,這也是他說工程師「刻意偏移頻率」的原因。(實際的 GPS 還有廣義相對論的效應,方向相反、更大;這裡不展開。)

07二次近似 Lec 9 38:44

線性不夠準的時候,多加一項:

二次近似(x 在 0 附近) $$f(x)\approx\underbrace{f(0) + f'(0)\,x}_{\text{線性部分}} + \frac{f''(0)}{2}\,x^2$$

例如 \(\ln1.1\approx\frac1{10} - \frac12\left(\frac1{10}\right)^2 = 0.095\),真值 0.09531:修正落在小數點後更遠的位數。40:55

那個 1/2 從哪裡來 Lec 10 9:48

如果 \(f\) 本身就是拋物線,它最好的二次近似當然是它自己,公式必須剛好成立。取 \(f(x) = a + bx + cx^2\):

$$f(0) = a,\qquad f'(0) = b,\qquad f''(0) = 2c\ \Longrightarrow\ c = \frac{f''(0)}{2}$$

二次微分會多跑出一個 2,所以要除回去。「沒有其他公式可能成立,而這個成立。」11:21

清單加上二次項 11:53

f(x)f″(0)二次近似(x ≈ 0)
\(\sin x\)0\(x\)(沒有 \(x^2\) 項)
\(\cos x\)−1\(1 - \frac12x^2\)
\(e^x\)1\(1 + x + \frac12x^2\)
\(\ln(1+x)\)−1\(x - \frac12x^2\)
\((1+x)^r\)\(r(r-1)\)\(1 + rx + \frac{r(r-1)}{2}x^2\)

\(\sin\) 的二階導數在 0 是 0,所以線性近似 \(x\) 同時也是二次近似:這就是 \(\sin x\approx x\) 特別準的原因。Lec 9 43:11

幾何意義:\(\cos x\) 在 0 的切線是水平線 \(y = 1\),它連函數在 0 附近比 1 大還是小都看不出來。二次近似 \(1 - \frac12x^2\) 是一條往下開的拋物線,貼合得好得多,是「最佳擬合的拋物線」。45:29

Demo 1 · 切線和最佳拋物線

怎麼看:上圖藍線是函數,橙線是線性近似(切線),綠線是二次近似(拋物線),都在 \(x_0 = 0\) 展開。拖 \(x\) 看兩個近似值和真值的距離。下圖是兩個誤差隨 \(|x|\) 變化的 log-log 圖:線性誤差的斜率大約是 2(誤差 \(\propto x^2\)),二次誤差大約是 3(\(\propto x^3\))。例外:\(\sin\) 的線性誤差斜率就是 3(線性近似同時是二次近似),\(\cos\) 的二次誤差斜率是 4,因為它們下一個非零項分別是 \(x^3\)、\(x^4\)。最後一個選項是第 5 節 Jerison 的例子。
f(x)線性近似二次近似
一句話帶走:二次近似 = 切線 + \(\frac{f''(0)}{2}x^2\);\(\frac12\) 是為了讓拋物線的近似剛好等於自己。它告訴你曲線在切點附近往哪邊彎。

08誤差的階:為什麼可以丟掉高次項 Lec 10 24:38

學生問:為什麼可以丟掉高次項?Jerison 的回答:想像 \(x = \frac1{100}\)。二次項是 \(10^{-4}\) 的量級,三次、四次項是 \(10^{-6}\) 以下。他沒有宣稱答案是精確的;保留到小數點後 4 位,丟掉的是第 6 位的東西。25:10

18.01SC 例題:和計算機比較
xsin x(真值)近似 xeˣ(真值)1 + x + x²/2
0.010.00999983330.011.01005016711.01005
0.10.09983341660.11.10517091811.105
10.841470984812.71828182852.5

\(x = 0.01\) 時兩個近似都準到 \(10^{-7}\) 左右;\(x = 1\) 時 \(\sin\) 差 0.16、\(e\) 差 0.22。近似只在基點附近可靠。

寫成式子:線性近似的誤差和 \((x - x_0)^2\) 同階,二次近似的誤差和 \((x - x_0)^3\) 同階(假設函數夠平滑)。Demo 1 的下圖就是在畫這件事。精確的誤差估計(Taylor 定理的餘項)18.01SC 說「課程很後面才會講」,在第 14 頁。

一句話帶走:\(x\) 小的時候,次數越高的項越小,而且小得很快;近似到幾次,就只保留到幾次,更高次的全部丟掉。

09用二次近似看收斂速度 Lec 10 15:05

回到第 03 頁的 \(a_k = (1 + \frac1k)^k\to e\)。有了線性近似,那個證明只剩一行:15:35

$$\ln a_k = k\ln\left(1 + \frac1k\right)\approx k\cdot\frac1k = 1$$

(用 \(\ln(1+x)\approx x\)、\(x = \frac1k\),\(k\) 越大越準。)要知道收斂得多快,就需要下一項:17:10

$$\ln a_k\approx k\left(\frac1k - \frac1{2k^2}\right) = 1 - \frac1{2k}\quad\Longrightarrow\quad a_k\approx e^{1 - \frac1{2k}}\approx e\left(1 - \frac1{2k}\right)$$

Jerison 說這正是作業題;上面的推導是我們自己補的。它解釋了第 03 頁 Demo 4 看到的現象:\(e - a_k\approx\frac{e}{2k}\),\(k\) 多 10 倍、誤差少 10 倍。數字:\(k = 100\) 時 \(\ln a_k - 1 = -0.004967\),\(-\frac1{2k} = -0.005\)。

二次近似的乘法 20:17

同一個函數 \(e^{-3x}(1+x)^{-1/2}\),這次要二次近似。各因子展到二次:

$$\left(1 - 3x + \tfrac92x^2\right)\left(1 - \tfrac12x + \tfrac38x^2\right)$$

(\(\frac{(-3x)^2}{2} = \frac92x^2\);\(\frac{r(r-1)}{2} = \frac{(-\frac12)(-\frac32)}{2} = \frac38\)。)Jerison 說二次近似「又亂又長,沒什麼好處」,唯一的好處是:高次項全部可以丟,所以這個乘法他心算就行。21:59 二次項有三個來源:兩個線性項相乘 \(\frac32\)、\(\frac92\) 乘 1、\(\frac38\) 乘 1:

$$\approx1 - \frac72x + \left(\frac32 + \frac92 + \frac38\right)x^2 = 1 - \frac72x + \frac{51}{8}x^2$$

他說答案就是這麼怪(\(\frac{51}{8}\)),這類問題的算術避不掉。25:43 檢查:\(x = 0.1\) 時真值 0.70634,二次近似 0.71375(誤差 0.0074,比線性的 0.056 小很多);用數值微分算 \(\frac{f''(0)}{2}\) 也是 6.375。

什麼時候用二次:學生問考試會不會指定。Jerison 說現在會,但現實中沒人會告訴你要用哪一個,連線性近似適不適用都不會說。永遠先試線性,有人逼你才用二次。19:47 他也提到經濟學的模型大多是 log-quadratic,再複雜就沒人用了。8:16

10再往上:Taylor 多項式

錄影沒有講,這是 18.01SC session 26 的例題。同樣的想法推到 \(n\) 次:找多項式 \(A(x) = a_0 + a_1x + \cdots + a_nx^n\),讓它在 0 的值和前 \(n\) 階導數都和 \(f\) 一樣。關鍵是第 02 頁的 \(D^nx^n = n!\),而且比 \(n\) 低次的項微分 \(n\) 次都變成 0:

$$A^{(n)}(0) = n!\,a_n = f^{(n)}(0)\quad\Longrightarrow\quad a_n = \frac{f^{(n)}(0)}{n!}$$ $$f(x)\approx f(0) + f'(0)x + \frac{f''(0)}{2!}x^2 + \frac{f'''(0)}{3!}x^3 + \cdots + \frac{f^{(n)}(0)}{n!}x^n$$

二次近似的 \(\frac12\) 就是 \(\frac1{2!}\)。次數往上加時,低次的係數不變,只是一直加新的項。這就是 Taylor 多項式,第 14 頁的冪級數會讓 \(n\to\infty\)。

在 DGM 哪裡用到:多變數的 Taylor 展開(梯度是一次項、Hessian 是二次項)見補充課 A §01。

11畫圖:f′ 和 f″ 告訴你什麼 Lec 10 29:29

目標:用 \(f'\) 和 \(f''\) 的正負畫出 \(f\) 的圖。2006 講義補一句:要的是定性正確,不必按比例。31:00

Jerison 的警告:不要丟掉微積分以前的技能和常識。常識有時候比微積分更重要,微積分只是補上你還不知道的部分。學過一點微積分的人反而要「忘掉」一些直覺。31:42
條件結論圖上
\(f' > 0\)\(f\) 遞增往右上走
\(f' < 0\)\(f\) 遞減往右下走
\(f'' > 0\)\(f'\) 遞增:concave up(凹口向上,也叫 convex)像碗 ∪
\(f'' < 0\)\(f'\) 遞減:concave down像帽子 ∩

第一條和線性近似是同一件事:切線往上,函數在附近也往上。33:17 第三條是同一個原則往上一階:\(f''\) 是 \(f'\) 的導數。Jerison 故意畫了一條往下走的 concave up 曲線:斜率從 −4 變成 −3,越來越不負,「遞增的是斜率,不是函數」。34:49

名詞

  • critical point:\(f'(x_0) = 0\) 的點 \(x_0\);\(y_0 = f(x_0)\) 叫 critical value。Jerison 說這是這個主題最重要的定義。不叫「轉折點」,因為函數不一定在那裡掉頭(2006 講義的例子 \(x^3 - 3x^2 + 3x\) 在 \(x = 1\) 的斜率是 0,但兩邊都遞增)。40:21
  • inflection point:\(f'' = 0\)、凹凸方向改變的點。51:00

學生問:尖角(例如 \(|x|\) 在 0)算不算 critical point?Jerison 說在微積分裡那不叫 critical point,是另一種也很重要的點,之後會講。43:37

12例子:3x − x³ 36:34

  1. \(f'\) 的正負:\(f' = 3 - 3x^2 = 3(1-x)(1+x)\)。\(-1 < x < 1\) 時兩個因子都正,遞增;\(x > 1\) 時 \(1 - x < 0\),遞減;\(x < -1\) 時 \(1 + x < 0\),也遞減。所以是「降、升、降」。37:37
  2. critical points 和 values:\(x = \pm1\),\(f(1) = 2\)、\(f(-1) = -2\),點出 \((1, 2)\) 和 \((-1, -2)\)。42:02 學生問怎麼知道 \(-1\) 是谷底、1 是山頂:Jerison 說他還沒用二階導數,用的是第 1 步「左邊降、右邊升」。44:08
  3. 常識:\(f(0) = 0\);全是奇次方,所以是奇函數,左右對稱(繞原點轉 180°)。45:39
  4. 兩端:\(x\to+\infty\) 時 \(-x^3\) 主導,\(f\to-\infty\);\(x\to-\infty\) 時 \(f\to+\infty\)。Jerison 說這是大家最常忽略的部分,也是繪圖計算機唯一做不到的:螢幕外面發生什麼事,要靠你自己知道。47:11
  5. 裝飾:\(f''\):\(f'' = -6x\),\(x < 0\) 時 concave up、\(x > 0\) 時 concave down,原點是 inflection point。到這一步圖其實已經定了,二階導數只是「裝飾」。49:15

2006 講義把步驟整理成 rubric:①(微積分以前的技能)先找不連續點,特別是無窮大的;② 找 critical points;③ 點出 critical values、判斷中間 \(f'\) 的正負;④ 找零點(容易的話);⑤ 看兩端。零點:\(3x - x^3 = x(3 - x^2) = 0\),\(x = 0, \pm\sqrt3\approx\pm1.732\)。

講義的另一個例子提醒為什麼不連續點要先找:\(y = \frac1x\) 的 \(y' = -\frac1{x^2} < 0\) 處處成立,但圖不是一條一路往下的曲線,它在 \(x = 0\) 從 \(-\infty\) 跳到 \(+\infty\)。

Demo 2 · 三次函數的升降與凹凸

怎麼看:調 \(f(x) = ax^3 + bx^2 + cx + d\) 的四個係數(仿 18.01SC 的 Graph Features mathlet)。圖上方的色帶標出 \(f' > 0\)(遞增)和 \(f' < 0\)(遞減)的區間,下方色帶標出 concave up/down。圓點是 critical points,方塊是 inflection point。按鈕載入本頁的三個例子;18.01SC 的那題請和常見誤解最後一條一起看。
遞增遞減concave upconcave down
一句話帶走:先用常識(不連續點、零點、對稱、兩端),再用 \(f'\) 的正負定升降和 critical points,最後用 \(f''\) 加上凹凸的裝飾。

13在 deep generative models 哪裡用到

這一頁在 DGM 的樣子
線性近似 \(\Delta f\approx f'\Delta x\)gradient descent 的出發點:參數走一小步 \(\Delta\theta\),loss 大約改變 \(\nabla L\cdot\Delta\theta\),所以往 \(-\nabla L\) 走最快變小;步子太大時線性近似失效,loss 反而上升(learning rate 太大)
\((1+x)^r\approx1 + rx\)DDPM 每一步 \(x_t = \sqrt{1-\beta_t}\,x_{t-1} + \sqrt{\beta_t}\,\varepsilon\)。\(\beta_t\) 很小時 \(\sqrt{1-\beta_t}\approx1 - \frac12\beta_t\)(例如 \(\beta = 0.02\):0.98995 對 0.99),每步把 \(x\) 拉回 \(-\frac12\beta_tx\),這就是 VP SDE 的漂移項 \(-\frac12\beta(t)x\),見補充課 E
二次近似在 log 密度的最高點(mode)做二次近似:\(\log p(x)\approx\log p(x_0) + \frac12f''(x_0)(x-x_0)^2\)(一次項是 0)。這是一個 Gaussian 的 log,變異數是 \(-\frac1{f''(x_0)}\):Laplace 近似。Newton 法(第 05 頁)則是對 loss 做二次近似再一步跳到拋物線的最低點
\(\ln(1+x)\approx x - \frac12x^2\)兩個很接近的分佈之間的 KL divergence 是二次的:把 \(\log\frac{p}{q} = \ln(1+\delta)\) 展到二次,一次項的期望值是 0,剩下的就是二次項(Fisher information)。第 14 頁會再看到
concave/convex\(\ln\) 是 concave(\(f'' = -\frac1{x^2} < 0\)),這是 Jensen 不等式和 VAE 的 ELBO(\(\log\mathbb{E}\ge\mathbb{E}\log\))的來源;convex 的 loss 只有一個谷底,好最佳化
在 DGM 哪裡用到:多變數版本的線性、二次近似(梯度、Hessian)見補充課 A §01、§07。

常見誤解

誤解:「線性近似在哪裡都可以用」。只在基點附近。\(\sin1000\approx1000\) 顯然荒謬(18.01SC 的例子);要嘛換一個靠近 1000 的基點,要嘛先用週期性把角度拉回 0 附近。
誤解:「二次近似是 \(f(0) + f'(0)x + f''(0)x^2\)」。漏了 \(\frac12\)。用 \(f(x) = x^2\) 檢查:\(f''(0) = 2\),沒有 \(\frac12\) 會得到 \(2x^2\)。
誤解:「組合近似時,乘出來的 \(x^2\) 項要保留,比較準」。如果每個因子只近似到一次,乘出來的 \(x^2\) 項是錯的(其他二次項已經丟了)。要二次就每個因子都展到二次(第 9 節)。
誤解:「concave up 就是往上走」。concave up 是斜率越來越大,函數本身可以一直往下(第 11 節 Jerison 的圖)。升降看 \(f'\),彎曲看 \(f''\)。
誤解:「\(f'(x_0) = 0\) 就一定是極大或極小」。\(x^3 - 3x^2 + 3x\) 在 \(x = 1\) 斜率是 0,但兩邊都遞增,只是暫時變平(2006 講義 Lecture 10 例 3)。
18.01SC 的筆誤。session 23 的例題寫 \(\sin(0.1) = 0.099883341\ldots\),實際是 0.0998334166…(中間兩位數字對調)。session 28 的例題要求「\(x > 2\) convex、\(x < 2\) concave」,同時「\(x < 1\) 降、\(1 < x < 3\) 升、\(x > 3\) 降」。降升降的三次函數 \(a\) 一定是負的,\(f''\) 遞減,所以 \(x > 2\) 一定是 concave down;解答 \(-\frac16x^3 + x^2 - \frac32x\) 也確實是 \(x < 2\) concave up、\(x > 2\) concave down,和題目的字面相反(2006 講義的用法是 convex = concave up)。解答寫 \(a\approx-0.16\),精確值是 \(-\frac16\approx-0.167\)。
2006 講義的小筆誤。Lecture 9 的 GPS 例子寫 \(T' = T(\cdots)^{-1/2}\approx1 + \frac12\frac{v^2}{c^2}\),右邊漏了因子 \(T\);旁邊的註寫成 \((1+u)^4\approx1 + ru\),應為 \((1+u)^r\)。

自我測驗

1. 用線性近似估 \(\sqrt{1.1}\)、\(\cos0.5\) 用二次近似估。各差多少?
\(\sqrt{1.1} = (1 + 0.1)^{1/2}\approx1.05\),真值 1.048809,差 0.0012(二次近似 \(1.05 - \frac18(0.01) = 1.04875\),差 0.00006)。\(\cos0.5\approx1 - \frac{0.25}{2} = 0.875\),真值 0.877583,差 0.0026。
2. 求 \(\frac{1}{(1-x)^2}\) 和 \(\ln(1 - 2x)\) 在 0 附近的線性近似。
\((1 + (-x))^{-2}\approx1 + (-2)(-x) = 1 + 2x\)。\(\ln(1 + (-2x))\approx-2x\)。
3. (18.01SC 例題)證明 \(f(x)g(x)\) 的線性近似,等於 \(f\) 和 \(g\) 的線性近似相乘後的線性部分。
\((f_0 + f_0'h)(g_0 + g_0'h) = f_0g_0 + (f_0'g_0 + f_0g_0')h + f_0'g_0'h^2\),其中 \(h = x - x_0\)。乘積的線性近似是 \(f_0g_0 + (fg)'(x_0)h\),而 \((fg)' = f'g + fg'\):線性部分完全一樣,只差 \(f_0'g_0'h^2\),\(h = 0.01\) 時只有 \(10^{-4}\) 的量級。這也是乘積規則的另一個看法。
4. 求 \(e^x\cos x\) 在 0 附近的二次近似。
\((1 + x + \frac12x^2)(1 - \frac12x^2)\approx1 + x + \frac12x^2 - \frac12x^2 = 1 + x\)。二次項剛好抵消。
5. (18.01SC 例題)\(\sin x\) 的三次近似是什麼?用 \(\frac{f^{(n)}(0)}{n!}\)。
\(\sin\) 在 0 的各階導數:0、1、0、−1。所以 \(\sin x\approx x - \frac{x^3}{6}\)。\(x = 1\):0.8333,真值 0.8415,比 \(x\) 的 1 好很多。
6. 畫 \(y = \frac{\ln x}{x}\)(\(x > 0\))的圖:critical point、最大值、兩端、零點。(2006 講義例 4)
\(y' = \frac{1 - \ln x}{x^2}\),在 \(x = e\) 是 0,左邊正、右邊負,所以 \(x = e\) 是最大值 \(\frac1e\approx0.368\)。零點 \(x = 1\)。\(x\to0^+\) 時 \(\ln x\to-\infty\)、再除以很小的正數,\(y\to-\infty\);\(x\to\infty\) 時 \(y\to0\)(\(\ln x\) 長得比 \(x\) 慢,第 13 頁會證明)。
7. \(x^4\) 在 0 的 \(f''\) 是 0,0 是 inflection point 嗎?
不是。\(f'' = 12x^2 \ge 0\),兩邊都是 concave up,凹凸沒有改變。\(f'' = 0\) 只是必要條件,還要確認兩邊符號不同。
8. 為什麼 \(\ln a_k - 1\approx-\frac1{2k}\) 推得出 \(e - a_k\approx\frac{e}{2k}\)?
\(a_k = e^{\ln a_k}\approx e^{1 - \frac1{2k}} = e\cdot e^{-\frac1{2k}}\approx e\left(1 - \frac1{2k}\right)\),第二步用 \(e^u\approx1 + u\)、\(u = -\frac1{2k}\)。所以 \(e - a_k\approx\frac{e}{2k}\)。

延伸閱讀

  • 18.01 Fall 2006 講義 Lecture 9(線性、二次近似的清單與證明,\(\frac{e^{-2x}}{\sqrt{1+x}}\) 的例子)、Lecture 10(畫圖的 rubric,\(\frac1x\)、\(x^3 - 3x^2 + 3x\)、\(\frac{\ln x}{x}\) 三個例子,二階導數判別法):離線包 lec9.pdf、lec10.pdf。
  • 18.01SC session 23–28 的 worked examples(離線包 MIT18_01SCF10_ex23prb.pdf–ex26prb.pdf、ex28prb.pdf):第 8 節的表、第 10 節、自我測驗 3、5 題,以及 Demo 2 的第三個例子。

上一頁:03 隱函數微分、反函數、指數與對數 下一頁:05 最佳化、related rates、Newton 法