一条曲线上的点居然可以相加,而且加法有单位元、有逆元、满足结合律——这不是比喻,是椭圆曲线全部应用价值(从数论到密码学)的地基。本节用直尺作图把加法定义出来,用贝祖定理解释"为什么偏偏三次曲线玩得转",最后结算一笔三百年历史的经典计数题,顺手指向密码学的下一册接口。
椭圆曲线的群律:取无穷远点 O 为单位元。任取两点 P、Q,过它们作直线(P=Q 时取切线),直线与曲线的第三个交点记 R,定义 P + Q = −R,其中 −R 是 R 关于 x 轴的镜像(O 的逆元规定为 O 自身)。
在 E : y² = x³ − x 上走一遍完整流程。取 P=(−1,0) 与 Q=(0,0)。过两点的直线是 y = x+1,代入曲线:
(x+1)² = x³ − x ⟹ x³ − x² − 2x − 1 = 0
三次方程已有两根 x=−1 与 x=0,第三根由韦达定理读出:根之和为 1,故 x₃ = 2;对应 y₃ = 3。第三个交点 R=(2,3),镜像取反得 −R=(2,−3)。于是
P + Q = (2, −3)
整个加法只用了"连线、代入、韦达、翻面"四步。两个特例也要会走:P+O 时"过 P 与 O 的直线"是竖直线,它与曲线的第三交点是 P 的镜像,取反回到 P——O 乘职单位元,规则自洽;P+(−P) 时直线与曲线交于 O(第三交点恰是无穷远点),P+(−P)=O,逆元就位。

加法的交换律肉眼可证(连线不分先后),结合律却不透明: (P+Q)+S = P+(Q+S) 的两边各作图若干次,直觉帮不上忙。经典的几何证明走"九点配置":作三条辅助直线,两两相交出九个点,其中两三次曲线恰好穿过其中八个,凯莱-巴赫拉伯定理(4.2 节的"过八必过九")逼出第九个点的位置,再由它读出结合律。这里不展开细节,要点是看清分工:
贝祖定理(3×3=9)负责"第三个交点必然存在",凯莱-巴赫拉伯负责"第九点被前八点焊死"——加法结构的自洽,是相交理论在暗处托底的。
顺带回答"为什么偏偏是三次":直线与二次曲线只交两点,"第三交点"无从谈起,构不成加法;三次恰好交三点,取二送一,加法从此启动。更高次曲线也有类似的"n−1 个点定第 n 个点"的拟群结构,但结合律与光滑性要求的条件苛刻得多——椭圆曲线是"足够丰富"与"足够驯服"的黄金交点,这解释了它为何成了整个学科的招牌菜。
代数面孔(密码学的地基):把作图翻译成公式——P=(x₁,y₁)、Q=(x₂,y₂) 相加时,斜率 λ=(y₂−y₁)/(x₂−x₁),和点坐标
x₃ = λ² − x₁ − x₂,y₃ = −y₁ + λ(x₁ − x₃)
公式里只有四则运算,没有量角器——计算机照单全收。把曲线与点搬进有限域 F_p,点的个数有限、加法照常,"一个点自加 N 次回到单位元的最小 N"(点的阶)成了难题设计的原料:椭圆曲线密码的安全性压在"已知 P 与 N·P 反推 N 极难"之上,而这套体系的每一步——点在曲线上、直线第三交点、韦达定根——都活在代数闭域语言里,只是把域换成有限域。这就是本册反复强调"域可以换"的回报时刻。
数论面孔(历史的地基):椭圆曲线上一个有理点的阶、坐标的分母结构,牵着数论里最深的问题群。怀尔斯证明费马大定理的路线图里,关键一步正是"半稳定椭圆曲线满足谷山-志村猜想"——椭圆曲线与模形式搭桥。本册只立路标:从 y²=x³−x 出发,下一册沿"有限域点数 → L 函数 → 模性"的方向继续走。
把加法公式落成概念代码,并验证本节的作图结果:
def ec_add(P, Q, a=-1, p=None): """椭圆曲线 y^2 = x^3 + a x + b 上的点加法(有理数域或有限域)。 p 为 None 时在有理数域上工作;否则按模 p 计算。""" if P is None: return Q if Q is None: return P (x1, y1), (x2, y2) = P, Q if x1 == x2 and (y1 + y2) % (p or 1) == 0: return None # P + (-P) = O lam_num = 3*x1*x1 + a if P == Q else y2 - y1 lam_den = 2*y1 if P == Q else x2 - x1 if p: lam = (lam_num * pow(lam_den, -1, p)) % p x3 = (lam*lam - x1 - x2) % p y3 = (lam*(x1 - x3) - y1) % p else: from fractions import Fraction as F lam = F(lam_num, lam_den) x3 = lam*lam - x1 - x2 y3 = lam*(x1 - x3) - y1 return (x3, y3) print(ec_add((-1, 0), (0, 0))) # (2, -3) —— 与手工作图一致 print(ec_add((2, -3), (2, -3))) # (0, 1/4) —— 切线加倍,分母出现分数 print(ec_add((1/4, 3/8), None)) # 输入校验类细节略:单位元返回原值
第三行演示切线加倍:P=Q 时切线斜率由隐函数求导 y' = (3x²+a)/(2y) 给出,其余流程不变。有限域模式调用模逆 pow(d, −1, p),一行切换就把几何作图搬进了密码学的跑马场——"换域不换法"是本册方法论的最后一张考卷。
把"换域不换法"当场兑现。取 E : y² = x³ − x 到 F₅(平方数只有 0、1、4),逐个 x 清点:x=0 给 y=0;x=1 给 y=0;x=2 给 y²=1,y 取 1 或 4;x=3 给 y²=4,y 取 2 或 3;x=4 给 y=0。仿射点共七个,加无穷远点 O,**#E(F₅) = 8**。哈塞定理承诺点数与 (5+1) 的偏差不超过 2√5 ≈ 4.5——偏差 2,合规。这个 8 不是闲数:E(F₅) 是 8 阶的有限交换群,按群论它只能是循环群或三阶与……的直积,逐点算阶是密码学"点计数"问题的婴儿版。本册的作图、韦达、镜像三件套在 F₅ 上一件不少,全数换装完毕。
三个易错点。其一,"取反"那步不可省:定义用的是第三交点的负点,直接把 R 当和是最高频错误——竖直线规则的对称性要求翻面。其二,有限域上"图像"全部失效,但公式原样运行:请彻底放弃在 F_p 上画曲线的念头,除子与贝祖的代数版本才是那里的通用语言。其三,光滑是群律的前提:结点曲线 y²=x³+x² 上"加法"会在奇点处失灵(切线不唯一、第三交点漂移),密码学里这叫异常曲线,明令禁用——5.1 节的判据在这里领取了安全审查的岗位。
本节在知识体系里的位置:全册主线在椭圆曲线上合龙——字典、射影化、函数域、维数次数、切空间、除子线丛,全部在这台"会做加法的几何机器"里各就各位。下一章掀开现代视角的幕布:概形只有一段话,计算与路线图才是正餐——地基既然打好,往上盖楼的路留给你自己走。