前四篇,我们一步步积累了数学的工具箱:数的抽象、零与负数、未知数 x、坐标系。
现在,是时候看看——这些工具组合起来,能释放出什么样的力量。
这一篇是第一幕的收官之作。
系列导航
▸ 第五篇(本文):方程的力量——自然界的源代码 【第一幕完结】
第一章:“方程"这个词,是中国人起的名
你可能不知道——“方程"这个词,来自中国。
公元 1 世纪左右成书的《九章算术》,是中国古代最重要的数学著作。全书分九章,其中第八章的名字就叫"方程”。
“方程"的原意是:并排(方)摆放的等式(程)。
原文(意译):
"上等稻谷 3 捆、中等 2 捆、下等 1 捆,共出米 39 斗;
上等 2 捆、中等 3 捆、下等 1 捆,共出米 34 斗;
上等 1 捆、中等 2 捆、下等 3 捆,共出米 26 斗。
问三等稻谷各出米几何?"
用今天的符号:
3x + 2y + z = 39
2x + 3y + z = 34
x + 2y + 3z = 26
答案:上等 x = 9¼ 斗,中等 y = 4¼ 斗,下等 z = 2¾ 斗
三个未知数,三个方程。这就是线性方程组。
中国人在两千年前就在系统地解方程组了。而《九章算术》中解方程的方法——逐步消去未知数——和今天线性代数课上教的"高斯消元法”,本质上完全相同。
高斯是 1800 年代的德国数学家。《九章算术》比他早了将近 1800 年。
刘徽(公元 263 年)为《九章算术》写了详细注解,不仅给出了更严密的推导,还用"割圆术”——把圆切成越来越多的多边形——计算出圆周率 π ≈ 3.1416。这个思想和一千四百年后欧洲的微积分如出一辙。刘徽是世界数学史上最被低估的天才之一。
所以,当你看到"方程"这个词,请记住——这是一个中国词,描述的是中国人两千年前就在做的事情。
第二章:方程在说什么?
让我们抛开"解题"的思维,重新看看方程到底在说什么。
一个方程,本质上是一句关于世界的陈述。
| 方程 | 它在说什么 |
|---|---|
| 距离 = 速度 × 时间 | “你走多远,取决于你多快和走多久” |
| F = ma | “力 = 质量 × 加速度。推一个东西,越重的越难加速” |
| E = mc² | “能量 = 质量 × 光速²。一丁点物质里藏着巨大的能量” |
| 周长 = 2πr | “圆有多大,只取决于半径。π 是宇宙的常数” |
| 1 + 1 = 2 | “把两个一合在一起,得到二。最简单的真理” |
看到了吗?每一个方程都是一句话。 只不过这句话用的是数学语言——更短、更精确、没有歧义。
牛顿没有"发明"F = ma。他发现了它——就像一个探险家发现一条河流。那条河流一直在那里,牛顿只是第一个看见它并把它记录下来的人。
方程不是人类的创造。方程是人类对自然界规律的记录。
一句话记住: 方程不是考试题。方程是自然界的源代码——宇宙按照这些规则运行,数学家只是把它们"翻译"成了人类能读的符号。
第三章:从简单到复杂——方程的进化
让我们从最简单的方程出发,一步一步看它能走多远。
第一级:线性方程——直线关系
y = 2x + 100
翻译:底薪 100 元,每工作 1 小时多赚 2 元
这是最简单的关系——匀速变化。画出来是一条直线。
生活中的直线关系无处不在:路程与时间(匀速行驶)、话费与通话时长、出租车里程与费用。
第二级:二次方程——抛物线
y = -5x² + 20x
翻译:投篮时篮球的飞行轨迹
篮球离手后,先上升、后下降,画出的是一条抛物线。
惊人的事实:投篮、扔石头、喷泉的水柱、发射炮弹——用的是完全相同的方程。 伽利略在 1600 年代发现了这一点,从此人类知道——大自然对所有抛射物"一视同仁"。
第三级:方程组——多个约束同时满足
回到《九章算术》的那道题——三种稻谷的价格,三个条件同时要满足。这就是方程组。
现实世界的大多数问题都是方程组:
| 场景 | 未知数 | 约束条件 |
|---|---|---|
| 《九章算术》稻谷 | 3 种谷物的价格 | 3 组买卖记录 |
| 红绿灯配时 | 每个路口的绿灯时长 | 各方向的车流量 |
| 飞机排班 | 每架飞机的航线 | 乘客需求 + 机场容量 + 成本 |
| 蛋白质折叠 | 每个原子的位置 | 化学键的约束 |
| 训练 GPT | 1750 亿个参数 | 几万亿个词的预测 |
从《九章算术》的 3 个未知数到 GPT 的 1750 亿个——方程组的思想没有变,只是规模大了亿万倍。
第四级:方程嵌套——复杂性的来源
真正有趣的事情发生在方程套在一起的时候。
简单: y = 2x + 1 一个方程
嵌套: y = f(g(h(x))) 方程套方程套方程
神经网络:y = f₃₂(f₃₁(...f₂(f₁(x))...)) 32 层方程嵌套
一个方程很简单。但 32 个方程像俄罗斯套娃一样套在一起,就能产生极其复杂的行为——复杂到连设计它的人都无法完全理解它在做什么。
这正是现代 AI 的状态。我们知道每一层在做什么(矩阵乘法 + 激活函数),但当几十层叠在一起时,涌现出的"智能"让所有人都感到惊讶。
一句话记住: 简单的规则,嵌套足够多次,就能产生令人震惊的复杂行为。这是方程的力量,也是 AI 的秘密。
第四章:最美的方程
数学史上有一些方程,因为它们的简洁和深刻,被称为"最美的方程"。
让我挑几个,翻译给你听:
1. 勾股定理:a² + b² = c²
直角三角形的两条短边的平方之和 = 长边的平方。
中国叫"勾股",最早记载在《周髀算经》(约公元前 1 世纪)。书中记录的"勾三股四弦五"——3² + 4² = 5²——是中国数学的骄傲。
这个定理有多深刻?后来的人们发现——它就是距离公式。 上一篇坐标系里算两个点的距离,用的就是勾股定理。GPS 定位、游戏碰撞检测、AI 计算词向量的距离——全部基于此。
两千多年前的一个关于三角形的发现,今天在你手机里每秒运行几百万次。
2. 圆的面积:S = πr²
一个圆的面积,只取决于半径。
刘徽的"割圆术"(公元 263 年)是人类最早计算 π 的精确方法之一。他把圆内接正多边形从 6 边增加到 96 边、192 边……边越多,面积越逼近圆的面积。
后来祖冲之(公元 5 世纪)用这个方法算出 π 在 3.1415926 和 3.1415927 之间——精确到小数点后 7 位。这个记录保持了近一千年,直到 15 世纪的阿拉伯数学家才超越。
刘徽的"切越来越细"的思想,本质上就是积分——微积分的核心思想之一。牛顿和莱布尼茨在 1400 年后才正式建立微积分理论。
3. 牛顿第二定律:F = ma
力 = 质量 × 加速度。
5 个字符。描述了从苹果落地到火箭发射的一切运动。
这个方程告诉你:宇宙中所有物体的运动,都遵循同一条规则。不管是蚂蚁还是行星。
4. 爱因斯坦质能方程:E = mc²
能量 = 质量 × 光速的平方。
5 个字符。告诉你一件不可思议的事:物质就是能量,能量就是物质。 一个回形针大小的物质如果完全转化为能量,释放的能量相当于广岛原子弹。
5. 欧拉恒等式:e^(iπ) + 1 = 0
数学中五个最重要的常数——e, i, π, 1, 0——用一个方程优美地联系在一起。
被数学家投票选为"最美的方程"。它把代数(0 和 1)、几何(π)、分析(e)和虚数(i)统一在一行里。
每一个方程背后,都是人类对宇宙的一次深刻理解。 它们不是人类"编"出来的。它们是人类从自然界中"读"出来的——就像从一本无比厚重的书里,一个字一个字地辨认出来。
第五章:中国的方程之路
中国在方程方面的贡献,远不止"方程"这个名字。
| 时间 | 人物/著作 | 贡献 |
|---|---|---|
| ~公元前 1 世纪 | 《周髀算经》 | 勾股定理"勾三股四弦五" |
| ~公元 1 世纪 | 《九章算术》 | “方程"章:系统的方程组解法 |
| 263 年 | 刘徽 | 割圆术(积分思想萌芽)、π ≈ 3.1416 |
| 5 世纪 | 祖冲之 | π 精确到 7 位小数,领先世界千年 |
| 13 世纪 | 秦九韶 | 《数书九章》:高次方程的数值解法 |
| 13 世纪 | 李冶 | “天元术”——用符号表示未知数,中国的代数符号化 |
| 14 世纪 | 朱世杰 | 《四元玉鉴》:四个未知数的方程组 |
特别值得一说的是秦九韶。
1247 年,秦九韶在《数书九章》中提出了一种解高次方程的方法。在欧洲,类似的方法要到 1819 年才由英国数学家霍纳(Horner)重新发现——晚了将近 600 年。
而朱世杰的《四元玉鉴》(1303 年)处理了四个未知数的方程组——这在当时的世界数学界是无与伦比的成就。
中国数学家在方程领域的探索,比欧洲同行领先了几个世纪。 遗憾的是,由于后来的历史原因,这些成就没有像欧洲数学那样发展成系统的理论体系。但种子是中国播下的。
一句话记住: “方程"是中国词。中国人在两千年前就在系统地解方程组,在七百年前就在解高次方程。这条路上,中国走在前面。
第六章:连接 AI——注意力方程
故事讲到这里,让我们看看 AI 世界里最重要的那个方程。
如果说牛顿用 F = ma 描述了物体如何运动,那么 Transformer 的作者用下面这个方程描述了AI 如何"思考”:
Attention(Q, K, V) = softmax(QK^T / √d) · V
看到这一行,你可能想关掉页面。
别急。 让我一个符号一个符号地翻译给你。
想象你在读一句话:"小猫坐在温暖的垫子上"
AI 在处理"垫子"这个词时,需要决定:
这句话里其他词,哪些和"垫子"关系大?
Q = "垫子"在问:"谁跟我有关?" (Query,查询)
K = 每个词在回答:"我是xxx" (Key,键)
V = 每个词提供自己的信息 (Value,值)
QK^T = 算"垫子"和每个词的相关度
"垫子" × "小猫" → 0.6(有点关系——猫坐在垫子上)
"垫子" × "温暖" → 0.8(很相关——温暖修饰垫子)
"垫子" × "的" → 0.1(几乎无关)
/√d = 缩放一下,防止数字太大
softmax = 把相关度变成概率(加起来等于 100%)
小猫: 25% 温暖: 55% 坐在: 10% 的: 5% 上: 5%
· V = 按概率混合每个词的信息
最终"垫子"的新含义 = 55%的"温暖" + 25%的"小猫" + ...
结果:"垫子"不再只是一个孤立的词
它现在"知道"自己是温暖的、有猫坐着的垫子
这就是 AI “理解"语言的方式。
它没有"思考”。它只是用一个方程——不断地算每个词应该"关注"哪些其他词,然后把信息混合起来。
这个方程里用到了什么?
| 方程中的元素 | 对应的数学概念 | 你在哪一篇学过 |
|---|---|---|
| Q, K, V | 向量/矩阵 = 坐标化的数 | 第四篇:坐标革命 |
| QK^T | 点积 = 衡量两个向量有多相似 | 坐标系里的距离 |
| √d | 开方 = 数的运算 | 第一篇:数的抽象 |
| softmax | 把数变成概率(0 到 1,加起来等于 1) | 第二篇:零的性格 |
| · V | 矩阵乘法 = 按权重混合信息 | 第四篇:坐标与运算 |
你在前四篇学到的每一个概念,都在这一行方程里。
这不是巧合。这就是数学的魅力——简单的概念,像积木一样搭建,最终构成了能"理解"人类语言的机器。
如果你想深入了解这个方程的每一步,可以看我的 《从矩阵乘法到 Transformer》——那里有更详细的拆解。但此刻最重要的是:你不再害怕这行公式了。 因为你知道它的每一个部分从哪里来。
一句话记住: AI 最核心的方程 Attention(Q,K,V) = softmax(QK^T/√d)·V,看起来复杂,但拆开来都是你已经认识的概念:向量、点积、缩放、概率、加权求和。没有一个超出你前四篇学过的范围。
第七章:第一幕的终点,第二幕的起点
让我们回望这一整段旅程。
① 结绳记事 → 抽象:用一个东西代表另一个东西
↓
② 零的发明 → 扩展:接受"没有",打开负数的大门
↓
③ 未知数 x → 推理:给"不知道"取名字,用逻辑求解
↓
④ 坐标革命 → 定位:给万物一个坐标,数形统一
↓
⑤ 方程力量 → 组合:把工具组合起来,描述世界的规律
这五步,就是人类理解静止世界的全套工具。
但你可能已经感觉到了——我们描述的世界是静止的。
方程 y = 2x + 1 是一条固定的线。F = ma 描述的是某一瞬间的力和加速度。坐标 (3, 5) 是一个不动的点。
可是,现实世界在变。
- 温度在变——早上冷,中午热,晚上又冷
- 股价在变——每秒都在跳动
- 速度在变——汽车在加速、减速
- 你在变——你今天和十年前不是同一个人
如何用数学描述"变化"本身?
这就是第二幕要回答的问题。
⑥ 函数 —— 万能的输入-输出机器
⑦ 指数爆炸 —— 人脑理解不了的增长
⑧ 圆与波 —— 三角函数的真面目
⑨ 微积分(上)—— 追问"此刻"
⑩ 微积分(下)—— 加起来的艺术
第一幕描述了静止的世界。 第二幕描述变化的世界。
而变化,恰好是 AI 最擅长处理的东西—— 因为语言本身就是一种变化:一个词接一个词, 每一步都在变,每一步都在选择。
动手实验
实验一:体验方程组——解《九章算术》原题
# 用 Python 解《九章算术》方程章第一题
# 三种稻谷的出米率
# 3x + 2y + z = 39
# 2x + 3y + z = 34
# x + 2y + 3z = 26
# 用消元法(和《九章算术》同样的方法!)
# 从方程1减方程2: x - y = 5 → y = x - 5
# 从方程2减方程3: x + y - 2z = 8
# 代入 y = x - 5: x + (x-5) - 2z = 8 → 2x - 2z = 13 → z = x - 6.5
# 代入方程3: x + 2(x-5) + 3(x-6.5) = 26
# x + 2x - 10 + 3x - 19.5 = 26
# 6x = 55.5
# x = 9.25
x = 9.25 # 上等
y = x - 5 # 中等 = 4.25
z = x - 6.5 # 下等 = 2.75
print("《九章算术》方程章 · 第一题")
print("─" * 40)
print(f"上等稻谷出米: {x} 斗 (9又1/4)")
print(f"中等稻谷出米: {y} 斗 (4又1/4)")
print(f"下等稻谷出米: {z} 斗 (2又3/4)")
print()
print("验证:")
print(f" 3×{x} + 2×{y} + 1×{z} = {3*x + 2*y + z} (应为39)")
print(f" 2×{x} + 3×{y} + 1×{z} = {2*x + 3*y + z} (应为34)")
print(f" 1×{x} + 2×{y} + 3×{z} = {x + 2*y + 3*z} (应为26)")
实验二:方程画出不同的"脸”
# 纯文本画三个方程的图形,感受方程的形状
def text_plot(title, func, x_range=(-6, 6), height=12, width=50):
"""终端里画函数"""
print(f"\n{title}")
points = []
for i in range(width):
x = x_range[0] + (x_range[1] - x_range[0]) * i / (width - 1)
try:
y = func(x)
points.append((i, y))
except:
points.append((i, None))
ys = [p[1] for p in points if p[1] is not None]
if not ys: return
ymin, ymax = min(ys), max(ys)
if ymax == ymin: ymax = ymin + 1
for row in range(height, -1, -1):
line = ""
for col in range(width):
_, y = points[col]
if y is None:
line += " "
continue
y_pos = int((y - ymin) / (ymax - ymin) * height)
if y_pos == row:
line += "●"
elif row == height // 2 and col == width // 2:
line += "┼"
elif row == height // 2:
line += "─"
elif col == width // 2:
line += "│"
else:
line += " "
print(f" {line}")
print()
import math
# 直线
text_plot("y = 2x + 1 (直线)", lambda x: 2*x + 1)
# 抛物线
text_plot("y = x² (抛物线)", lambda x: x**2)
# 正弦波
text_plot("y = sin(x) (波浪)", lambda x: math.sin(x))
本篇小结
一、“方程"是中国词
- 《九章算术》第八章"方程”,系统解法比高斯早 1800 年
- 刘徽的割圆术、祖冲之的圆周率、秦九韶的高次方程——中国数学的骄傲
二、方程 = 自然界的源代码
- F = ma, E = mc², a² + b² = c²
- 方程不是人类创造的,是人类从自然界"发现"的
三、简单嵌套出复杂
- 一个方程很简单,几十层套在一起就能产生"智能"
- 神经网络就是方程的嵌套
四、注意力方程
- Attention(Q,K,V) = softmax(QK^T/√d)·V
- 拆开来都是你认识的概念:向量、点积、概率、加权求和
五、第一幕完结
- 抽象 → 扩展 → 推理 → 定位 → 组合
- 我们有了描述"静止世界"的全套工具
- 下一步:描述"变化"
下一篇预告
第一幕结束了。但数学的故事远没有结束。
我们描述了点、线、面、方程。但这一切都是静止的。
真实的世界在动。温度在变、速度在变、你的心跳在变。
第二幕的第一个问题:如果我给你一个输入,你能给我一个输出——这种"输入→输出"的关系,叫什么?
答案是:函数。
函数是数学中最核心的概念。而整个 AI,本质上就是一个超大型的函数——输入一段话,输出下一个词。
《看见数学》系列 — 从结绳记事到 AI,看见数学之美。
本文首发于「AI 学习笔记」博客:https://Jason-Azure.github.io/ai-blog/
微信公众号:AI-lab学习笔记
系列文章完整列表见 标签:看见数学
