计算机数学入门 · 从一个坑,走到整门学科

这一组讲的不是"数学课",是计算机建立在什么数学之上。

写给已经会写点代码、但一听"数学"就心里没底的人。

先说清楚它跟别的东西有什么不同

数学系的数学计算机数学
关心什么对象本身的性质在有限资源下能不能算、算得对不对、算得多快
对"无穷"的态度核心研究对象必须消灭的东西
对"误差"的态度追求精确量化它、控制它、容忍它

数学是连续的、无限的、精确的;计算机是离散的、有限的、近似的。 这两者之间的翻译工作,就是计算机数学。

八层目录

层解决什么问题对应课程状态
一 · 数怎么装进机器有限表示、误差、溢出数值分析(一)
二 · 离散结构采样、量化、集合、关系、图、计数离散数学(二)
三 · 怎么保证对命题、量词、证明、循环不变量数理逻辑(三)
四 · 什么能算自动机、可计算性、停机问题计算理论(四)
五 · 算得多快渐近代价、复杂度、P vs NP算法分析(五)
六 · 不确定的世界概率、贝叶斯、随机化概率论与统计(六)
七 · 连续的近似导数、梯度、优化微积分(七)
八 · 高维的表示向量、矩阵、特征值、SVD线性代数(八)

先读这篇

(总纲)计算机数学入门 · 总纲:八层为什么是这个顺序 — 25 分钟

一个“一万笔账”的普通记账任务,八层数学全用上了。

为什么是这八层、为什么顺序不能乱、你是哪种人该走哪条路线、怎么才知道自己学会了。

只看一篇的话,看这篇。

八篇正文

(一)计算机里的数,不是数学里的数 — 1.15 万字

0.1 + 0.2 为什么不等于 0.3。六个坑一路推到格点模型、模运算、2038 问题,最后推出整套八层体系。

一个数怎么被压进机器。

(二)世界是连续的,机器是离散的 — 1.3 万字

一个 15 kHz 的声音,用 8000 Hz 采样,听起来是 1 kHz——而且听不出错了。

从采样定理、量化噪声(6.02n+1.76)、鸽巢原理,讲到集合、关系、图、计数。最后是生日悖论:32 位空间 43 亿,七万条就有一半概率撞。

一堆东西怎么被压进机器。

(三)怎么证明它是对的 — 1.4 万字

一个活了 9 年的二分查找 bug——逻辑看起来完美、测试全都过了、线上从来没出问题,因为它只在数组超过 10 亿个元素时才触发。

穷举 53,158 个用例测 6 个二分变体:两个全过、三个崩(其中一个是 78.2% 的输入死循环,但从不给错答案)。

从归纳法、循环不变量、德摩根律讲到空数组上 all() 为什么返回 True。

怎么确认它还是对的。

(四)机器算不出来的东西 — 1 万字

写一个判断“另一个程序会不会停”的程序——然后证明这件事做不到。

从康托尔对角线(实数不可数)到图灵停机问题(自指 + 反着做),最后是 Rice 定理:“这个程序有没有 bug”不可判定。

能算的函数在数学上存在的函数里,占比是 0。“无所不能的 AI”在数学上不存在。

有些事,机器根本做不了。

(五)验证很快,找到很难 — 9000 字

验证一个答案只要 3 纳秒,找出答案要试 320 亿次。

P vs NP:为什么“验证一个解”和“找到一个解”是天壤之别;为什么 SAT、数独、背包是同一个问题;为什么你的密码押在 P≠NP 上。

能算、算得动、算不动——复杂度是三层,不是两层。

(六)不确定的世界 — 1 万字

一个“准确率 99%”的检测,测出阳性,你有病的概率其实不到 10%。

贝叶斯定理、三门问题、生日悖论、赌徒谬误——全部实测。最后讲反直觉的随机化算法:用随机,反而更快更准(Miller-Rabin 半毫秒判素数)。

世界是不确定的,概率是唯一能驾驭它的数学。

(七)用直线去逼近曲线 — 1.1 万字

求导数时,h 越小越准吗?错。 实测误差是 U 形:h=1e-8 最准(误差 3e-9),h=1e-16 时导数算出来直接是 0。

两个误差在打架:截断误差随 h 涨,舍入误差随 h 落——第一篇文章的“格点”在这里直接变成“算得越精细反而越错”。

然后是泰勒展开(计算机里的 sin 怎么算)、梯度下降(AI 学习的全部机制)。学习率临界值 lr<0.1 可以算出来,不是调参玄学。

AI 不是“理解”,是“下降”。

(八)怎么让机器觉得两句话很像 — 1.2 万字

机器不懂“意思”,但它能把意思变成向量——然后“意思相近”就变成了“夹角小”。

king − man + woman ≈ queen(实测余弦 0.9535)。SVD 图像压缩、维度诅咒(5000 维时随机两点变异系数 0.01),最后是注意力机制 = 三次矩阵乘法(Q·Kᵀ → softmax → W·V)。

八层走完,最后有一张表:一个 GPT,八层全用上了。

读法

每篇都是长文,都要动手。 不跑一遍,你只是又"知道"了一件事——这正是很多人"学了很多、还是没底"的原因。

每篇末尾都有"本篇所有数字的来源",所有实测数字都是本机跑出来的,不是引用的。你自己跑出来的会差最后几位,但结论是结构性的。