指數與對數:先把 e 和 ln 弄清楚
這是基礎 01 關,不算在主線十六關裡面 —— 它是那十六關之前你會希望有人先講清楚的東西。
玩完這關,你會知道 ln 只有三條性質、e 不是誰挑的(是一條式子自己收斂到的)、
以及「對數刻度」那張圖到底該怎麼讀。
你隨時可以插隊進來,也隨時可以回去。後面關卡用到 ln 的地方,都會連回這一頁。
① 這關在解什麼問題
你不是不會 log,你是每次遇到它都要重推一次那三條性質。
這兩件事完全不同。不會的話要從頭學;每次重推的話,缺的只是一個放它們的地方 —— 一頁你可以隨時回來翻、翻完馬上就走的地方。這一關就是那一頁。
後面主線十六關在哪裡用掉了 log
下面這張表不是清單,是這一關存在的理由。這七個位置都直接假設你已經會 ln:
| 在哪 | 用到什麼 | 你需要哪一節 |
|---|---|---|
| 06 ③ | log(總價) = log(單價) + log(數量) 造成兩欄共線 | ④ 乘變加 |
| 機率統計 01 ⑤ | 「E 穿不過平方、開根號、取倒數、取 log」 | ⑧ |
| 機率統計 01 ⑦ | 橫軸是對數刻度(1、10、100、1000 各佔一樣寬) | ⑦ 對數刻度 |
| 機率統計 02 ⑨ | 取 ln 把右偏拉正、對數常態、E[exp Y] ≠ exp(E[Y]) | ④ · ③ |
| 機率統計 03 ⑦ | 年化 √252 之前那句「取對數就變成加法」 | ④ 乘變加 |
| 機率統計 05 ⑤ · ⑦ | 門檻 k = √(−2·ln α):解 e−t/2 = α 反解出來的 | ③ 互逆 · ④ |
| 實戰 ③ | log 報酬 ln(Pt/Pt−1)、三個月倍數相乘變相加 | ④ · ⑤ 複利 |
看得出一件事:七個位置分散在四個不同主題上。 所以它不該被塞進其中任何一關 —— 那七個地方都只需要「乘變加」那一句,不需要整套。
本頁符號對照表
這一頁只有 8 個符號,而且沒有一個是新的:
| 符號 | 唸法 | 它問的是什麼 | 哪一節 |
|---|---|---|---|
| bx | b 的 x 次方 | 乘 x 次的結果。b 叫底(base) | ② |
| logb x | log base b of x | 反過來問:b 的幾次方會等於 x | ③ |
| e | e(自然底數) | 一個固定的數 2.71828…,來歷見 ⑤ | ⑤ |
| ln x | natural log of x | 就是 loge x。底是 e 的時候專用的寫法 | ③ |
| exp(x) | exp of x | 就是 ex。式子太長時改寫成這樣,兩者完全同義 | ③ |
| log x | log of x | 底被省略了。工程上多半指 ln 或 log10, 為什麼可以省見 ⑧ | ⑧ |
| 斜率 | 「x 動一點,y 跟著動多少」除出來的比。⑥ 會現場量它 | ⑥ | |
| n | n | 期數(一年被切成幾期複利)。只在 ⑤ 出現 | ⑤ |
指數是「一直乘」,log 是「反過來問乘了幾次」。 因為它問的是次數,所以裡面在乘的,出來就變成在加 —— 那就是後面主線十六關唯一真正用到的那一條。
② 先有指數:一格一格「乘」上去
log 是指數的反面,所以要先把指數擺清楚。而指數只有一句話:
x —— 指數(exponent),乘了幾次。
整行讀作:「乘 x 次之後變成幾倍」。指數在數次數,不在數大小。
這件事你早就會了,真正反直覺的是它長多快。下面這張圖把「每期乘 8%」跟「每期加 8%」擺在一起跑。
—
—
把預設值(r = 8%、n = 60)的數字讀出來: 乘的那條變成 101.26 倍,加的那條只有 5.80 倍 —— 差 17.5 倍。 而且乘的那條已經跨過兩個數量級(log₁₀ 101.26 = 2.01)。
「跨越兩個數量級」這句話裡的數量級,本身就是一個 log —— 它問的是「10 的幾次方」。你只要開始關心倍數而不是差額,就已經在用 log 思考了, 只是還沒把它寫下來。
下一節就把它寫下來。
③ log 是「反過來問指數」:問的是次數
指數問的是「乘 x 次會變成幾」。把問題調頭:已經變成這麼多了,那是乘了幾次?
白話:logb x 就是「b 的幾次方等於 x」的那個「幾」。
例:log₁₀ 1000 = 3(10 乘 3 次是 1000)、 log₂ 8 = 3(2 乘 3 次是 8)、 ln 20.09 = 3(e 乘 3 次是 20.09)。
「互逆」這件事有一個看得見的長相:兩條曲線沿著 y = x 這條斜線互相照鏡子。 因為調頭問問題,在圖上就是把 x 和 y 對調 —— 也就是沿對角線翻過去。
—
—
③-A 兩個一定要記的邊界值
為什麼 ln 1 = 0:問「e 的幾次方等於 1」—— 一次都不用乘,所以是 0。這對任何底都成立(logb 1 = 0)。
順帶一個常見的卡點:ln 吃不下 0 和負數。 因為 e 的任何次方都是正的,「e 的幾次方等於 −3」沒有答案(見 ⑧)。
拖圖上那顆點到 x = 1 附近,你會看到藍線穿過橫軸 —— 那一點就是 ln 1 = 0。再往左,藍線直接掉下去:那就是「吃不下 0」的畫面。
④ 三條性質,就這三條
這一節是整關的核心,也是你每次都要重推的那三條。它們全部來自同一件事: 指數在數次數,而次數是可以相加的。
ln(ak) = k · ln a
ln(a / b) = ln a − ln b 第一條叫乘變加、第二條叫冪變乘、第三條叫比變減。
三條其實是同一條:乘 a 要 ln a 次,再乘 b 要 ln b 次, 合起來當然是兩個次數相加。第二條是第一條重複 k 次;第三條是第一條把 b 換成「除」。
換任何底都成立(把 ln 換成 log₂ 或 log₁₀ 三條照樣對),這一節用 ln 只是因為後面關卡都用它。
ln(a + b) 不能拆成 ln a + ln b, 也不等於 ln a · ln b,它就是拆不開。
記法很簡單:log 只認得「乘」這個動作。括號裡面是乘、除、次方,它就有辦法; 括號裡面是加減,它就沒辦法。
④-A 動手對帳:兩邊算出來永遠一樣
—
—
預設值 a = 6、b = 7.5、k = 3 的三組數字:
| 性質 | 左邊 | 右邊 | 差 |
|---|---|---|---|
| 乘變加 ln(6 × 7.5) vs ln 6 + ln 7.5 | 3.806662 | 3.806662 | 0.000000 |
| 冪變乘 ln(6³) vs 3 × ln 6 | 5.375278 | 5.375278 | 0.000000 |
| 比變減 ln(6 / 7.5) vs ln 6 − ln 7.5 | −0.223144 | −0.223144 | 0.000000 |
第三列是負的,因為 6 / 7.5 < 1 —— 比 1 小的數,log 是負的(要「乘不到一次」才會變小)。這不是錯,是刻度的另一半。
- 三個月的報酬為什麼可以相加(實戰 ③): 總倍數是 1.105 × 1.35 × 1.65,取 ln 之後就是 0.1 + 0.3 + 0.5 = 0.9。第一條性質,用了三次。
- 年化波動率為什麼能用 √252(機率統計 03 ⑦): 報酬要能相加,變異數才能相加;而讓它變成相加的動作就是取 log。
- 取完 log 丟進線性模型會踩到共線(06 ③): 總價 = 單價 × 數量 本來是乘法、不算線性相依, 但 log(總價) = log(單價) + log(數量) 就是了。 第一條性質幫你把三欄變成相依的三欄。
- 反解門檻(機率統計 05 ⑤): 要從 e−t/2 = α 解出 t, 兩邊取 ln 得 −t/2 = ln α,所以 t = −2·ln α。用的是 ③ 的互逆 + ④ 的冪變乘。
⑤ 為什麼偏偏是 e:把複利切得越來越細
到這裡三條性質都成立於任何底。那為什麼全世界的公式都用 e 這個 看起來莫名其妙的 2.71828…?
因為它不是被挑出來的,是被算出來的。下面這個問題會把它逼出來:
銀行給你年利率 100%。存 1 塊,一年後領 2 塊 —— 這沒問題。
現在改成半年給一次,每次 50%:1 × 1.5 × 1.5 = 2.25。比 2 多。
那改成每月給一次呢?每天?每秒?切得越細,錢是不是就無限多?
1/n —— 每一期分到的利率(總共還是 100%,只是切碎)。
切得越細,期數越多但每期越少 —— 這兩件事在互相拉扯,所以結果不明顯。
—
—
| 切法 | n | (1 + 1/n)n |
|---|---|---|
| 年繳 | 1 | 2.000000 |
| 半年 | 2 | 2.250000 |
| 每季 | 4 | 2.441406 |
| 月繳 | 12 | 2.613035 |
| 每週 | 52 | 2.692597 |
| 日繳 | 365 | 2.714567 |
| 每小時 | 8760 | 2.718127 |
| 本頁滑桿拉到底 | 10000 | 2.718146 |
| 切到無限細(連續複利) | → ∞ | 2.718281828… = e |
最後一列的數字本頁算不出來 —— 它需要「無限細」這個動作, 而那個動作叫極限,屬於 ⑩ 提到的那門東西。 本頁能做的是讓你看到它停在哪:n 每乘 10 倍,只多對一位小數。
e 是「成長被切到無限細」的那個結果。 它會出現在所有「連續地變」的地方 —— 連續複利、放射性衰變、電容充放電、人口成長、 以及 機率統計 02 關那條鐘形曲線裡的 e。
而 ln 就是「以 e 為底的 log」。既然 e 是連續成長的天然單位, 問「成長了幾次」的時候用它當底最省事 —— 這就是它叫 natural 的第一層意思。 第二層意思在下一節,而且更漂亮。
⑥ 為什麼叫 natural:量一次它的斜率就知道了
這一節只做一件事:拿尺去量兩條曲線的坡度,然後看量出來的數字是什麼。
「斜率」就是你在 最佳化 01 關的地形圖上關心的那個東西 —— x 往右動一點,y 跟著動多少。量法很土,而且土到可以現場做:
分子是「右邊那點的高度減左邊那點的高度」,分母是「兩點的水平距離」—— 就是「上升 ÷ 前進」,跟你看地圖坡度的算法一模一樣。
這個做法叫中央差分。最佳化 02 關 ⑤ 節用完全相同的手法 去驗「λ 真的是那條曲線的斜率」,那裡的 h 也是 0.001。
—
—
把兩個代表性的位置讀出來(這兩組數字就是上面那張圖在 x = 2 與 x = 3 的讀數):
| 曲線 | 位置 | 量到的斜率 | 對照的東西 | 相對誤差 |
|---|---|---|---|---|
| ex | x = 2 | 7.389057 | e² = 7.389056 | 1.7 × 10−7 |
| ln x | x = 3 | 0.333333 | 1/3 = 0.333333 | 3.7 × 10−8 |
ex 的斜率,就是 ex 自己。 你站在曲線上任何一點,那一點有多高,坡就有多陡。高度與坡度是同一個數字 —— 世界上只有這一條曲線有這個性質(以及它的常數倍)。
而 ln x 的斜率是 1/x。 所以 ln 一路變慢:在 x = 1 坡度是 1, 到 x = 100 只剩 0.01。 這解釋了 ⑦ 那張圖為什麼能把「差好幾個數量級」的資料壓進一個畫面 —— 它對大數字越來越不敏感,剛好就是我們看大數字的方式。
換底之後這件事就不成立了:2x 的斜率是 2x × 0.693…,多一個礙眼的常數。 「哪個底讓這個常數剛好是 1」的答案就是 e —— 這是它 natural 的最終理由。
你剛剛量的那個東西叫導數:完整版(差商、h → 0、 切線的定義,以及這兩條式子 d/dx ex = ex、 d/dx ln x = 1/x 的來歷)在微積分 · 導數關 ③。 這一關不需要它,⑩ 會再說一次為什麼。
⑦ 對數刻度怎麼讀:等距 = 等倍數
前面六節都在講 log 這個運算。這一節講 log 這個畫法 —— 它在工程上出現的頻率比運算還高,而且很容易讀錯。
對數刻度:等距 = 等倍數(×10、×10、×10) 所以對數軸上,1 到 10 的寬度和10 到 100 的寬度、100 到 1000 的寬度 完全一樣。它們差的絕對值是 9、90、900,但倍數都是 10。
讀法只有一句:在對數軸上,你量到的距離是「幾倍」,不是「差多少」。
下面拿一份右偏的資料來示範 —— 2000 筆模擬的 API 延遲(毫秒)。 這種形狀在工程上到處都是:絕大多數很快,少數慢到不成比例。
—
—
兩者長得很像,但動的東西不同,值得花三十秒分清楚:
- 這一節(換軸):資料完全沒動,只是畫圖時的刻度換成對數。 統計量(平均、中位數、p99)一個都沒變,變的只有你眼睛看到的形狀。
- 機率統計 02 ⑨(換資料的尺): 真的把每一筆 x 換成 ln x, 然後在新尺度上重算統計量。那裡的平均、偏態全部會變 —— 那才是「取 log」。
一句話:這裡換的是眼鏡,09 換的是資料本身。 兩者都靠同一條性質吃飯(乘變加),但用途完全不同。
順帶回收 機率統計 01 ⑦ 那張圖: 它的橫軸(抽到第幾筆)用對數刻度,理由跟這裡一樣 —— 前幾筆的劇烈晃動與第 1000 筆的細微擺動要同時看得見,只有等倍數的刻度做得到。
⑧ 工程師的「原來如此」與踩坑
你在不同地方看到 log₂(二分搜尋)、log₁₀(分貝、pH)、 ln(數學公式),會覺得要記三套。不用:
例:log₂ 1000 = ln 1000 / ln 2 = 6.907755 / 0.693147 = 9.9658 —— 而 210 = 1024,確實比 1000 大一點點,對得上。
這直接解釋了一件你可能背過但沒想過的事:big-O 裡面的 log 為什麼從來不寫底。 因為 big-O 本來就忽略常數倍,而換底只差一個常數倍 —— O(log₂ n) 和 O(ln n) 是同一件事。
- 分貝(dB):10 · log₁₀(功率比)。 「+3 dB」不是加了什麼,是大約兩倍。
- pH:−log₁₀(氫離子濃度)。pH 差 1 是濃度差 10 倍。
- entropy / cross-entropy:機器學習的 loss 裡那個 log p —— 因為機率是相乘的(獨立事件),取 log 讓它變成相加, 才有辦法用 最佳化 01 關的梯度去壓低它。 全景 01 關提到的「負對數概似」就是這個。
- 半衰期:解「剩下一半是什麼時候」就是解 e−kt = 0.5, 兩邊取 ln。跟 機率統計 05 關反解門檻同一個動作。
- 音階:一個八度是頻率兩倍。所以鋼琴鍵盤是一把log₂刻度尺。
ln 0 是 −∞,ln(−3) 直接沒有答案 (③:e 的任何次方都是正的)。而真實資料一定會有 0 —— 延遲有 0、庫存會歸零、報酬是負的。
常見的補丁是 ln(x + 1)(程式庫叫 log1p)。
它能跑,但要誠實面對兩件事:① 它改變了形狀,不再是純粹的 log;
② 加的那個 1 是你憑感覺選的(為什麼不是 0.5、不是 0.01?),
而這個選擇會影響結論。要在報告裡寫出來。
在 log 尺度上算平均,再 exp 回原尺度 —— 這是實務上最常見的一個安靜的錯。 你拿到的不是平均,是中位數。
原因是 E[exp(Y)] ≠ exp(E[Y]),也就是 機率統計 01 ⑤那條「E 穿不過非線性函數」。 差多少、以及為什麼剛好差一個 es²/2, 機率統計 02 ⑨算給你看 —— 這一頁只負責讓你知道要去那裡看。
再說一次,因為它是最常被寫錯的一條:ln(a + b) 拆不開。
檢查自己有沒有寫錯的最快辦法:代兩個數字進去算。 ln(2 + 3) = ln 5 = 1.609,而 ln 2 + ln 3 = 0.693 + 1.099 = 1.792 —— 不等。一秒鐘就抓到了。這也是 ④ 那個對帳盤存在的理由: 任何你不確定的性質,都可以用「代數字進去,看差是不是 0」問頁面。
⑨ 這關回答了什麼
一句話說,log 到底是什麼?
它是「乘了幾次」的那個次數。logb x 問的是 「b 的幾次方等於 x」,所以它的答案是一個次數,不是一個大小。
知道它在數次數,三條性質就不用背了:次數當然是可以相加的 —— 乘 a 用掉 ln a 次、再乘 b 用掉 ln b 次, 合起來就是 ln a + ln b。④ 的對帳盤現場驗這件事。
為什麼偏偏是 e = 2.71828…?誰決定的?
沒有人決定,它是算出來的。拿 100% 的年利率,把一年切成 n 期複利, 結果是 (1 + 1/n)n。切得越細數字越大,但不會無限大 —— 它停在 2.718281828…。⑤ 的滑桿讓你親手把 n 拉到 10000, 看它爬到 2.718146 就幾乎不動了。
更深一層的理由在 ⑥:e 是唯一讓「斜率=自己」成立的底。 換成 2 或 10,斜率就會多出一個礙眼的常數倍。所有公式選 e,是為了讓那個常數變成 1。
ln 和 log 有什麼不一樣?程式裡的 log() 是哪一個?
ln 是底為 e 的 log,寫法固定、沒有歧義。
單獨的 log 則省略了底,意思要看場合:
數學與大多數程式語言指的是 ln(JavaScript 的 Math.log、
Python 的 math.log 都是自然對數);工程圖表與計算機按鍵上多半是
log₁₀;資訊與演算法裡通常是 log₂。
好消息是猜錯也不會錯太遠:⑧ 那條 logb x = ln x / ln b 說明換底只差一個固定倍數。 壞消息是那個倍數會進到你的數字裡,所以寫程式時還是要確認一次。
對數刻度的圖,我到底該怎麼讀?
把「距離」讀成「幾倍」,不要讀成「差多少」。 對數軸上 1→10、10→100、100→1000 三段寬度一樣,因為它們的倍數都是 10。
兩個實用推論:① 圖上一條直線代表固定成長率(不是固定增量), 這是 ② 切到對數縱軸時看到的畫面; ② 兩點的垂直距離相同就代表倍數相同,所以對數軸特別適合比較 「差好幾個數量級」的東西 —— ⑦ 那份延遲資料就是例子。
那我什麼時候「該」取 log?
三個訊號,看到任一個就值得試:
- 這個量是「乘」出來的:價格(每天乘一個報酬率)、所得(每年乘一個成長率)、 檔案大小(層層放大)。乘出來的東西取 log 之後才變成加出來的, 而機率統計 02 關的 CLT 只認加法。
- 資料右偏、尾巴拖很長:平均被少數大值拖走、平均遠大於中位數。 完整處理在 機率統計 02 ⑨。
- 你關心的是倍數而不是差額:「快了兩倍」比「快了 30ms」更有意義的時候。
反過來,不該取的訊號也很明確:資料有 0 或負數(坑 1)、 或者你要的答案是原尺度的平均(坑 2)。
⑩ 下一步:微積分
這一關結束前,把 ⑥ 那個量測器量到的東西攤開來看。 你剛剛親手做了三件事,而它們都不只是關於 log:
第二條:所以 ln 一路變慢 —— x 越大,坡越平。
第三條:⑤ 那個「切到無限細」的動作 —— 它本身就是一個斜率。
這三件事你已經看到了,只是還沒有人告訴你它叫「導數」。
「量斜率」這個動作有名字,而它會在後面被拿去做兩件很具體的事: 最佳化 01 關用它找谷底 (站在最低點,四面八方的坡度都是 0)、 最佳化 02 關用它量影子價格 (用的就是 ⑥ 那個一模一樣的中央差分,連 h = 0.001 都一樣)。
你不需要先學完那門東西才能往下走 —— 最佳化 01 與 02 關會在需要的地方把畫面給你。 但如果哪天你想知道「量斜率」這件事完整長什麼樣,你已經摸過它三次了。
要現在就看那個名字的完整版:微積分 · 導數關 (微積分那一組有五關:01 導數 / 02 積分 / 03 多變量 / 04 規則 / 05 應用,同樣不算在主線十六關裡,跟這一關一樣隨時可插隊)。 最短路徑是 ② 導數 加 ③ ex 與 ln —— 那兩節就是把上面這三句話補完。