Linear Algebra Lab

從向量空間公理到 AI,八個互動專案

核心演算法全部手刻——高斯消去、Householder QR、Jacobi 與 Golub-Reinsch SVD、FFT、QR 演算法,沒有用任何現成的線性代數庫。理論說「可以這樣算」,這裡量的是「真的用電腦算下去會發生什麼」。

教材與專案是同一件事的兩半

七層理論教材 回答「為什麼這樣定義」,八個專案回答「當我真的要用電腦算出來,會遇到什麼理論課沒說的事」。 每一層的開頭都有一個「動手驗證」表格,把該層的概念直接連到對應的互動示範。

教材層次對應專案
第零層 · 向量空間01 線性變換視覺化器
第一層 · 四大子空間02 高斯消去求解器
第二層 · 內積與投影03 最小二乘 · 04 傅立葉
第三層 · 特徵值05 特徵值計算器 · 01
第四層 · SVD06 SVD 圖片壓縮器
第五層 · 矩陣微分07 梯度下降視覺化
第六層 · 機器學習08 PCA 資料探索器

這不是八個獨立的練習

專案之間互相 import:03 的 Householder QR 被 05 的 QR 演算法用; 02 的高斯消去被 03、05、07 用; 06 的 SVD 與 03 的 Jacobi 各自撐起 08 的兩條 PCA 路徑。

條件數 κ 出現三次,每次意思不同: 專案 03 決定「解得準不準」、專案 07 決定「收斂得快不快」、專案 08 決定「該不該標準化」。

每個專案都有對照組

兩種以上的做法並排跑,讓差異可以被量測而不只是被描述。

專案對照組量到的差異
02選主元 vs 不選ε=1e-16 時解從 1 變成 2.22
03Normal Equation vs QRSSE 9.1e-18 vs 168.6
03古典 vs 修正 Gram-Schmidt‖QᵀQ−I‖ 從 1.3e-13 到 2.5
05位移 vs 未位移 QR 演算法2 步 vs 2224 步
06Jacobi vs Golub-Reinsch真實影像 3000ms vs 680ms
07GD vs 動量 vs Newton761 / 92 / 1 步
08手刻 PCA vs scikit-learn一致到 1e-15

測恆等式,不測數字

測試幾乎都建立在「數學上必須成立什麼」而不是「答案應該等於幾」—— PA = LU、QᵀQ = I、Av = λv、 Aᵀ(Ax̂ − b) = 0、USVᵀ = A、λᵢ = σᵢ²/(n−1)。

這類測試不需要事先知道正確答案,卻能抓到最深的 bug:專案 06 的 Golub-Reinsch 第一版有 19 個測試失敗,其中「U 正交」「奇異值遞減」「雙對角化正確」全部通過, 只有 A = UΣVᵀ 掛掉。測部件的性質遠遠不夠,一定要測部件之間的關係。