曲线上有理函数稀缺:亏格 1 的曲线上,除了常数,没有任何"处处合法"的函数。想多要函数,就得放宽条件——允许函数带极点,但极点要"登记在册、总量受限"。这个"带配额的函数空间"有多大?答案由本册分量最重的公式给出:黎曼-罗赫定理。它的现代语言要靠线丛来陈述,而线丛本身是几何与代数之间最深的一条隧道——本册以入门为限,把直观、定义与公式一次讲清。
线丛:曲线上局部看起来像"一点配一条直线"、整体按函数规则扭转的结构,记作 L。除子 D 给出线丛 O(D):允许极点至多为 D 的那些函数,是 O(D) 的截面。黎曼-罗赫定理(曲线版):l(D) − l(K − D) = deg D + 1 − g,其中 l(D) 是"至多带 D 型极点"的函数空间维数,K 是典范除子,g 是亏格。
先感受稀缺。亏格 1 的椭圆曲线 E 上,任何极点只在 O 的有理函数必为常数——也就是说 l(n·O) 在小 n 时出奇地小。想要非平凡函数,就要"花钱":允许在若干点放极点,每放一份记一笔账,这份账就是除子 D。定义
l(D) = dim { 有理函数 f :(f) + D ≥ 0 }
条件 (f) + D ≥ 0 的直白读法:f 的极点不得超过 D 的额度(在每一点上分别核对),零点则随意。D 越大,配额越松,l(D) 越大。几何家的追问是:**配额与账面之间有没有精确的收支公式?**黎曼-罗赫就是这条收支公式:收入侧 deg D + 1,成本侧 g(亏格,曲线的内在复杂度),再配一项修正 l(K−D)。

黎曼-罗赫里的 l(D) 依赖"允许哪些极点",把这个"允许清单"几何化,就得到线丛 O(D)。入门阶段用三层递进来理解:
第一层(函数视角):O(D) 的截面 = 至多带 D 型极点的函数。这是定义,不是比喻。
第二层(转移函数视角):把曲线用仿射卡覆盖,每个卡上 O(D) 平凡得像"卡 × 一维向量空间";换卡时的衔接由有理函数(转移函数)完成。比如 O(O)(平凡丛)在 A¹ 卡与无穷远卡之间由 Z 承担衔接——射影化的余泽再次出现:无穷远点的存在让"扭转"有了登记处。
第三层(类视角):扭不扭、扭多狠,不看具体转移函数,看除子类。O(D) 与 O(D') 同构 ⟺ D 与 D' 线性等价。于是除子类群(皮卡群)= 线丛分类账——第 6.1 节的账本在这里二次变现。
为什么叫"丛"?因为它是"每点挂一条线(一维向量空间)"的族。第 7 章会说明:线丛是概形语言里最早尝到甜头的对象;而本节只要抱住一句操作口诀——除子是账,线丛是账的化身,截面是按账领函数。
公式不在例子里跑一遍就不算拥有它。亏格 0(直线 P¹):典范除子次数为 −2,于是 K−D 次数为 −2−deg D,负次数除子无截面,l(K−D)=0,黎曼-罗赫化简为
l(D) = deg D + 1
取 D = n·O:l = n+1,基底恰是 1, t, …, tⁿ——多项式函数的维数公式被曲线论口径重新收编。有理曲线的函数多到"配额即所得",这就是 3.3 节"有理曲线可参数化"的账面根源。
亏格 1(椭圆曲线):典范除子次数为 0(且线性等价于 0),deg D 大于 0 时 l(K−D)=0,公式化简为
l(D) = deg D
取 D = 2·O:l = 2,常数 1 之外恰还有一个函数——坐标函数 x(它在 O 有二阶极点,2.3 与 6.1 的老熟人)。取 D = 3·O:l = 3,新到场的正是 y(三阶极点)。x 与 y 不是谁规定写在方程里的,而是黎曼-罗赫发放的配额——椭圆曲线方程 y²=x³−x 中"x 三次、y 二次"的次数配方,在账本上早有预演。
把亏格 1 的账算成程序可验的清单。目标:找出极点只在 O、阶数至多 2 的所有函数。理由先行:这类函数写成局部参数 s = 1/x 附近至多 s⁻² 阶的无穷级数;候选以 x 与常数张成。验证概念代码:
# 椭圆曲线 y^2 = x^3 - x 上,验证 l(2*O) 的维数为 2(概念演示) # 候选基底:1 与 x。 # 核查规则:f 的极点至多 2 阶,等价于 f 在局部参数 s = 1/x 下, # x*f 在 O 附近有界(乘 x 抵消二阶极点)。 def pole_order_at_O(numer, denom, check_bound=8): """概念核查:数值上探测 f 在 O 的极点阶。 取大 x 值看 f 的增长速度:二阶极点表现为 |f| 与 x^2 同阶。""" xs = [10, 100, 1000] for X in xs: y = (X**3 - X) ** 0.5 f = numer(X, y) / denom(X, y) # 一阶增长应像 X,二阶像 X^2;常数增长不超界 return None # 真正的判定交给符号计算,此处仅示范数值口径 # 数值抽样:x 增长时 f = x 表现为一次增长 → 一阶极点,落在 2*O 配额内 for X in (10, 100, 1000): Y = (X**3 - X) ** 0.5 print(X, Y / X) # y/x 趋于 1:y 与 x 同为一阶增长 # y 实为三阶极点:(y) = 三零点 - 3O,超过 2*O 配额 → 不属于 l(2*O)
读法:数值抽样提示 y 的大体量级,真正的判定回到 6.1 节的除子账——(y) = (1,0)+(−1,0)+(0,0) − 3O,三阶极点超出 2·O 的额度,所以 y 不属于 l(2·O) 而 (x) 落入。账本口径与数值口径互相咬合,机器与手算对得上,结论才算落袋。
再把 6·O 的格子跑完,因为全册的压轴方程就藏在那里。l(6·O) = 6,基底候选:1、x、y、x²、xy、y²(x² 的极点四阶、xy 六阶、y² 六阶,全部在配额内)——恰六个函数,维度严丝合缝,六个函数在"以 1,x,y 为基"的表达下必有一个非常数线性关系,系数待定:
y² + a₁xy + a₃y = x³ + a₂x² + a₄x + a₅
这就是韦尔斯特拉斯一般形的雏形。做两次聪明的换元(把 xy 项与 y 的线性项吸收掉)后,方程压平成 y² = x³ + ax + b。椭圆曲线方程的形状不是谁规定的,是黎曼-罗赫算出来的——6.3 节解剖曲线时,请带着这句结论回看。
三个易错点。其一,l(D) 数的是函数空间维数不是函数个数——它总含常数 1(当 D 有效时),维数至少 1,零或负的答案先查 D 是否有效。其二,黎曼-罗赫是等式不是不等式,但 l(K−D) 项在小 deg D 时不可随手扔掉;"deg D 大于 2g−2 时修正为零"是安全使用条件(R-R 推论),别在边界上硬套。其三,线丛同构看除子线性等价类,不看点位:同一曲线上点位挪动而次数不变的除子往往不同构,判据回 6.1 的皮卡群。
本节在知识体系里的位置:账本有了审计公式,函数的稀缺与配额从此可算。两节铺垫已足,下一节正式解剖椭圆曲线——把"亏格 1、带一个有理点"这句话拆开揉碎,看它如何长出全册最漂亮的加法结构。