數學手冊 / 第 1 章
v 0.1 · 互動版
README.md

從零開始的數學手冊

這份手冊把基本數學寫成像「程式語言入門文件」 — 每個概念都先給一個簡短定義,再用一個你可以親手玩的 demo 解釋它。讀完一章你會有手感,而不只是背公式。

manifest
// 這份手冊涵蓋的章節 chapters = [ "數與運算", // 整數、負數、平方根 "函數", // 把輸入變輸出的機器 "座標與向量", // 用數字描述位置與方向 "矩陣" // 一次處理多個向量的工具 ]
CHAPTER 1

數與運算

所有數學的最底層都是「數」。先把它弄清楚,後面才不會卡。

1.1 數線上的位置

把所有數字想像成一條無窮長的尺。每個數字都對應到尺上的一個點。「比較大」就是「在右邊」。

definition
type Number = "無窮長尺上的某個位置" // 例如 3 在 0 的右邊三格的位置
TRY IT — 拖滑桿,看數字落在哪
目前位置:3

1.2 負數 — 尺的另一邊

把尺向左延伸,0 左邊那些位置就是「負數」。負數不是「沒有」,而是「往反方向的某個位置」 — 像欠錢、像往南走、像比海平面低。

examples
let 銀行存款 = 100 // 有 100 元 let 信用卡帳單 = -300 // 欠 300 元 let 海平面 = 0 let 海溝深度 = -10000 // 比海平面低一萬公尺
TRY IT — 兩個數字相加(可以是負的)
5
-3
a + b = 2

1.3 平方與開方

把一個數乘上自己叫做「平方」。3² = 3·3 = 9。「開方」是反過來:給你 9,問你哪個數平方會得到 9?答案是 3。視覺上,平方就是「拿一條長度 x 的邊,做出一個 x×x 的正方形,看面積多大」。

syntax
function square(x) { return x * x } function sqrt(y) { return // 那個平方後等於 y 的數 }
TRY IT — 邊長 x,看正方形面積
邊長 x = 3.0
面積 x² = 9.0
反過來:
√(9.0) = 3.0
CHAPTER 2

函數

函數是「把一個數變成另一個數的規則」。在程式裡你寫 f(x) = ...;在數學裡也是同一個東西。

2.1 函數是一台機器

把函數想像成一台機器。你從左邊塞一個數字 x 進去,機器照規則處理一下,從右邊吐出另一個數字 y

syntax
function f(x) { return 2 * x + 3 // 規則:乘 2,再加 3 } f(0) = 3 f(5) = 13
TRY IT — 把數字塞進機器
f(x) = 2x + 3
13

2.2 線性函數 y = mx + b

最簡單的函數叫「線性」,因為畫出來是一條直線。m 是斜率(線往哪邊斜、斜多陡),b 是截距(線在 y 軸上交在哪)。

general form
y = m·x + b // m 越大,線越陡 // m 為負,線往下斜 // b 控制線「上下」位置
TRY IT — 拉滑桿改 m 與 b
y = 1.0·x + 0.0

2.3 二次函數 y = ax² + bx + c

把 x 平方一下,畫出來就不是直線了 — 是一條彎曲的「拋物線」。打籃球的軌跡、噴泉的水柱、丟石頭的曲線,全都是二次函數。

general form
y = a·+ b·x + c // a > 0 開口向上 (碗形) // a < 0 開口向下 (山形) // |a| 越大,曲線越窄
TRY IT — 拉滑桿改 a, b, c
CHAPTER 3

座標與向量

從一維的數線升級到二維的平面。每個位置現在需要兩個數字 — 一個橫的、一個直的。

3.1 座標平面

把兩條數線交叉成「十字」,就成了座標平面。任何一個點都能用 (x, y) 兩個數字精確描述。x 是橫的、y 是直的。

type
type Point = [x: number, y: number] const origin = [0, 0] const p = [3, 2] // 往右 3,往上 2
TRY IT — 在格線上點任意位置
點 = (3, 2)

3.2 向量是位移

「點」是位置,「向量」是位移。一個向量 (3, 2) 不代表「(3, 2) 那個點」 — 它代表「往右 3、往上 2 這個動作」。所以你可以從任何起點出發,走這個位移。它有方向、有長度,沒有固定起點

api
interface Vector { dx: number // 橫向位移 dy: number // 縱向位移 } length(v) = sqrt(v.dx² + v.dy²)
TRY IT — 拖箭頭尾端
向量 = (4, 3) ・ 長度 = 5.00

3.3 向量加法

把兩個向量加起來 = 「先走第一個位移,再從那邊接著走第二個位移」。在圖上會是一個平行四邊形,兩條對角線就是相加的結果。

rule
[a₁, a₂] + [b₁, b₂] = [a₁+b₁, a₂+b₂] // 例 [3, 1] + [1, 2] = [4, 3]
TRY IT — 拖兩個向量看相加
v₁ + v₂ = (4, 3)
CHAPTER 4

矩陣

把一群數字排成方格 = 矩陣。它是同時處理多個向量的工具,是線性代數的主角。

4.1 矩陣的長相

2×2 的矩陣有四個位置。每一「欄」(直的)代表一個基底向量被搬到哪裡。所以一個矩陣其實在告訴你「世界要怎麼變形」。

structure
M = [ a b ] ← 第 1 列 [ c d ] ← 第 2 列 i j ← 兩個基底向量的去向
TRY IT — 改四個值,看 i, j 跑去哪

4.2 矩陣 × 向量

矩陣乘向量的規則:把向量裡的數字當成「對基底各取多少份」。M·v 的結果就是「x 份新 i + y 份新 j」。

formula
[ a b ] [ x ] [ a·x + b·y ] [ c d ] · [ y ] = [ c·x + d·y ] // 第 1 列 dot 向量 = 結果第 1 個 // 第 2 列 dot 向量 = 結果第 2 個
TRY IT — 改 M 與 v,看相乘結果
矩陣 M
向量 v
step 1: 2·4 + 1·2 = 10
step 2: 0·4 + 3·2 = 6
M·v = (10, 6)

4.3 變換的視覺

把 M 想成「整個世界一起被 M 作用」 — 每個點都被搬到 M·點 的新位置。試試下面四個預設變換,看世界怎麼被捏。

TRY IT — 點按鈕看世界變形
M = [1, 0; 0, 1]
CHAPTER 5

行列式

每個方陣都對應到一個數字 — 行列式 (det)。它告訴你三件事:(1)變換把面積放大幾倍,(2)有沒有翻面,(3)矩陣是否可逆。det = 0 代表整個世界被壓扁成一條線,再也回不去。

5.1 一個數字告訴你的事

formula (2×2)
det [ a b ] = a·d - b·c [ c d ] // det > 0 → 面積放大 |det| 倍 // det < 0 → 同上 + 翻面 // det = 0 → 壓成一條線(不可逆)
TRY IT — 看 det 隨矩陣變化
det = 1.00
CHAPTER 6

逆矩陣

如果 M 把世界捏成某個樣子,M⁻¹(讀作「M 的逆」)就是把它捏回去的那個矩陣。M·M⁻¹ = I(單位矩陣,什麼也不做)。但 det = 0 時逆矩陣不存在 — 你不可能把壓扁的麵團還原成立體。

6.1 撤銷一個變換

formula (2×2)
M = [ a b ] M⁻¹ = 1/det · [ d -b ] [ c d ] [ -c a ] if (det == 0) throw "不可逆"
TRY IT — 看 M 與 M⁻¹ 互相抵消
M
[2, 1; 1, 3]
M⁻¹
[0.6, -0.2; -0.2, 0.4]
M · M⁻¹ =
[1, 0; 0, 1] ← 單位矩陣,剛好還原
CHAPTER 7

特徵向量

絕大多數向量被矩陣作用後,方向都會變。但通常會有幾個「特別的方向」,作用後方向不變,只變長變短。那些方向叫特徵向量,被拉伸的倍數叫特徵值 λ。它們是矩陣的「個性指紋」 — 看到它們就看懂這個矩陣的本質。

7.1 不會被轉歪的方向

definition
M · v = λ · v // v 是特徵向量、λ 是特徵值 // M 作用 v 之後,方向不變、只是拉伸了 λ 倍 // 純旋轉沒有實數特徵向量(任何方向都會被轉歪)
TRY IT — 紫色就是不會被轉歪的方向
特徵值 λ₁ = 2.00, λ₂ = 1.00
CHAPTER 8

線性方程組

「兩個未知數、兩條方程式」幾何上就是「兩條直線在哪裡相交」。寫成矩陣是 Ax = b,解就是 x = A⁻¹b。整個工程、經濟、AI 都建立在「解線性方程組」之上 — 規模從 2 個未知數到上億個。

8.1 兩條線的交點

system
a₁·x + b₁·y = c₁ // 第一條方程式(一條線) a₂·x + b₂·y = c₂ // 第二條方程式(另一條線) // 寫成矩陣: [ a₁ b₁ ] [ x ] [ c₁ ] [ a₂ b₂ ] [ y ] = [ c₂ ]
TRY IT — 拉滑桿改方程式,看交點
解:(x, y) = (1.67, 0.67)
CHAPTER 9

三維世界

從 (x, y) 變成 (x, y, z),每個點多一個座標。線性代數的所有東西照樣成立,只是矩陣從 2×2 變 3×3、向量從兩個分量變三個。但「方向」突然多得多 — 旋轉不再只是「轉幾度」,而是「繞哪個軸轉幾度」。

9.1 多一個維度

3d rotation matrices
// 繞 X 軸轉 θ Rx = [ 1 0 0 ] [ 0 cos θ -sin θ ] [ 0 sin θ cos θ ] // 繞 Y、Z 軸的旋轉矩陣形狀類似
TRY IT — 旋轉一個 3D 立方體
CHAPTER 10

4×4 與齊次座標

3×3 旋轉矩陣搬不動原點,所以平移搞不定。圖學界的小聰明:把每個 3D 點偷偷加一個 1,變成 (x, y, z, 1)。這樣矩陣多出來的那一欄就能塞平移量,平移就能跟旋轉、縮放一起用矩陣相乘做完。

10.1 為什麼要 4×4

structure
M = [ R₁₁ R₁₂ R₁₃ | Tx ] // 藍:旋轉+縮放 [ R₂₁ R₂₂ R₂₃ | Ty ] // 橘:平移 [ R₃₁ R₃₂ R₃₃ | Tz ] [ 0 0 0 | 1 ] // 灰:齊次列,不會動
TRY IT — 改平移與旋轉,看矩陣對應位置
[...]
CHAPTER 11

鏡頭與投影

3D 場景最後要顯示在 2D 螢幕上。每個頂點要經過三次矩陣相乘:Model(物體在世界裡的位置)→ View(鏡頭在哪、看哪邊)→ Projection(透視投影到螢幕)。整個遊戲、3D 動畫的鏡頭都靠這條 MVP pipeline。

11.1 把 3D 投到螢幕

pipeline
螢幕座標 = P · V · M · 頂點 P = projection // 透視(遠的東西看起來小) V = view // 鏡頭位置與朝向 M = model // 物體在世界裡的位置
TRY IT — 改鏡頭位置與視角
CHAPTER 12

神經網路一層

把第 4 章的「矩陣 × 向量」換個包裝,就是 AI 的核心。每一層神經網路做的事是 y = Wx + b:把輸入向量 x 用權重矩陣 W 變換、加上偏置 b。整個 ChatGPT、Claude、Stable Diffusion 都是上百層這種運算疊起來。

12.1 y = Wx + b

one layer
function forward(x) { return activate(W · x + b) } // W: 權重矩陣(訓練時學出來的) // b: 偏置向量 // activate: 非線性函數(ReLU / sigmoid 等)
TRY IT — 3 維輸入 → 2 維輸出
CHAPTER 13

三角函數

把一個半徑 1 的圓放在原點,從 (1, 0) 開始逆時針走 θ 角度,會停在某個點。那個點的 x 座標就是 cos θ,y 座標就是 sin θ。所有跟「角度、旋轉、波」有關的事都從這裡開始。

13.1 sin、cos 與單位圓

definition
const unitCircle = { x: cos θ, y: sin θ } cos() = 1 sin() = 0 cos(90°) = 0 sin(90°) = 1 cos(180°) = -1 sin(180°) = 0 // 永遠:sin² θ + cos² θ = 1
TRY IT — 拉角度,看單位圓上的點
cos θ = 0.71
sin θ = 0.71
tan θ = 1.00
CHAPTER 14

指數與對數

指數是「重複乘」 — 2³ = 2·2·2 = 8。它增長的速度比線性快得多,是「複利」、「人口爆炸」、「電腦容量」的數學形狀。對數是它的反問題:「2 的幾次方等於 8?」答案是 3,寫作 log₂(8) = 3。

14.1 爆炸性成長

comparison
linear(x) = 10 · x // 慢而穩 exponential(x) = 2^x // 慢起步、後來爆炸 log(x) = log₂(x) // 反過來:先快後慢 // 一張紙對折 42 次的厚度 ≈ 月球距離
TRY IT — 比較線性、指數、對數
線性 = 50
指數 2ˣ = 32
log₂ = 2.32
CHAPTER 15

微積分入門

微積分有兩個主角:微分(某一點的「變化率」 = 切線斜率)和積分(一段範圍下的「累積量」 = 曲線下面積)。AI 的訓練本質就是在做微分 — 算出「我把參數調一點點,誤差會變多少」,然後往對的方向調。

15.1 變化率與面積

two ideas
// 微分:在某一點,函數變化得多快? f'(x) = slope at x // 積分:從 a 到 b,曲線下總共有多少? ∫f(x) dx = area under curve // 兩者互為反運算(微積分基本定理)
TRY IT — 拉 x,看切線斜率與面積
f(x) = x²/2
切線斜率 f'(x) = 2.00
面積 ∫₀ˣ = 1.33
CHAPTER 16

機率

機率把「不確定」量化成 0 到 1 之間的數字。0 = 不可能,1 = 一定發生。期望值是「每次平均能拿到多少」 — 賭博、保險、投資、AI 預測背後都靠這個概念決定行為是否值得。

16.1 期望值

formula
E[X] = Σ (機率 × 結果) // 例:擲一顆骰子,期望點數 E = 1/6·1 + 1/6·2 + 1/6·3 + 1/6·4 + 1/6·5 + 1/6·6 = 3.5
TRY IT — 擲骰子,看實際平均逼近期望值
擲了 0
實際平均 =
期望值 = 3.50