某天你回头检查自己的手算:圆与双曲线真的交四点吗?√⟨x², xy⟩ 真的等于 ⟨x⟩ 吗?十字线 xy=0 的分解有没有漏分支?手验一遍尚可,题目一大就得靠机器。本节交付全册的计算出口:格罗布纳基的工作流——定义环、造理想、化简、消元、取根、报维数——在 Singular 与 Macaulay2 里的标准会话,配三个全册招牌计算的完整复核。命令可以不背,流程必须带走。
格罗布纳基:给定单项式序(比较单项式的规则),理想的格罗布纳基是一组特殊生成元,它让"一个多项式是否属于该理想"的判定机械化(逐项消元到规范形,结果为零即属于)。它是理想计算的通用引擎:消元、求根、求维数都由它驱动。
机器计算的固定流程只有六步,先看总图再逐站落地:
六步里最核心的是第三步 std(Singular 命令,Macaulay2 里叫 gens gb)。它把"任意生成元组"整理成"规范生成元组"——1.2 节说要给方程组发身份证,格罗布纳基就是身份证上的规范印刷体。其余五步全是它的下游应用。
4.2 节手算结论:x²+y²=1 与 xy=1 在复数域恰交四点。复核流程:把两条曲线联立成理想,消去 y 得一元方程,数根。
// Singular 会话:圆与双曲线的交点 > ring R = 0, (x, y), lp; // lp = 字典序,消元专用 > ideal I = x^2 + y^2 - 1, x*y - 1; > ideal G = std(I); // 格罗布纳基 > G; _[1]=y4-y2+1 _[2]=xy-1 _[3]=x2+y2-1
读输出:第一个生成元 y⁴−y²+1 只含 y——这正是消元定理的兑现:字典序格罗布纳基中只含 y 的生成元,就是消去 x 后的方程。y⁴−y²+1 是四次式,在复数域恰四根(判别后无重根),每根对应唯一 x=1/y,四个交点坐实。手算时我们消 x 得 x⁴−x²+1,机器消 y 得 y⁴−y²+1,对称而不雷同——消哪个变元,看单项式序里谁排在后面。
消元定理(工作流的理论背书):字典序下,G ∩ k[x] 中的生成元恰生成 I 与 k[x] 的交 I ∩ k[x]——"投影后剩下的约束"被一格罗布纳基捞尽。第 1 章说"字典让几何问题变可算",消元定理就是可算性的第一块界碑。
复核 1.2 节的两个手工结论。其一,√⟨x², xy⟩ 应为 ⟨x⟩;其二,十字线 xy=0 应分解为两条轴。
// Singular 会话:根理想与素分解 > ring R = 0, (x, y), dp; // dp = 度反字典序,化简最快 > ideal I = x^2, x*y; > std(I); _[1]=y2 _[2]=x2 > radical(I); _[1]=x > ideal J = x*y; > minAssGTZ(J); // 素分解(最小相伴素理想) _[1]: _[0]=y _[2]: _[0]=x
三段输出各管一事。std(I) 给出规范形 ⟨x², y²⟩——原生成元 x² 与 xy 化简后等价于"两个坐标各自平方";radical(I) 输出 ⟨x⟩,手算结论一比一复核。minAssGTZ(J) 把 ⟨xy⟩ 分解为 ⟨x⟩ 与 ⟨y⟩ 两个素分支——几何上就是"十字由横轴与纵轴拼装"的代数判词,5.2 节标本四的"身份是拼装"在此盖章。分解与取根是"看清簇的零件清单"的两条机器通道,对应字典里的素分解。
4.1 节的维数判据交给机器。问题:⟨x², xy⟩ 定义的簇维数多少?期待答案 1(√I=⟨x⟩,零点集是整条 y 轴)。
// Singular 会话:维数 > ring R = 0, (x, y), dp; > ideal I = x^2, x*y; > dim(std(I)); 1 > ideal K = x, y; > dim(std(K)); 0
第一条报告 1:虽然生成元都是二次的,簇却是一整条直线——维数看根理想不看生成元次数,机器的输出再次敲打这个易错点。第二条对照组 ⟨x,y⟩ 报 0:原点是零维。计算维数在更高维的问题是刚需(手画不可能),这一行命令就是 4.1 节"消元口径"的机器化。
Macaulay2 的同款工作流供对照——语法不同、流程一致:
-- Macaulay2 会话:同三题的对照写法 R = QQ[x, y, MonomialOrder => Lex]; -- 字典序 I = ideal (x^2 + y^2 - 1, x*y - 1); gens gb I -- 消元:应含 y^4 - y^2 + 1 J = ideal (x^2, x*y); radical J -- ideal x codim radical J -- 维数 = n - codim = 1 decompose ideal (x*y) -- {ideal x, ideal y} 十字分解
两套系统的分工习惯:Singular 的基计算速度快,Macaulay2 的输出排版接近教材——工程与教学各领一摊,流程则完全同构。
消元之前还差一步安全检查:两条曲线有没有公共分支(贝祖前提二)?机器口径是算最大公因式:
// Singular 会话:公共分支检查 > ring R = 0, (x, y), dp; > ideal C = x^2 + y^2 - 1; > ideal D = x*y - 1; > gcd(C[1], D[1]); 1 // 最大公因式是常数:无公共分支
输出 1 意味着两条曲线不共享任何不可约分支——4.2 节"m·n 个交点一个不少"的前提逐字核验通过,第二节消元数出的四个交点因此是全款而非分期。先 gcd、后消元、再数根,这个三拍子是相交计算的标准安检流程,漏掉第一步就可能把"无穷大个交点"当成普通账目。
三个易错点。其一,单项式序不是装饰:dp 快但几乎不消元,lp 消元强但慢——"想消元还选 dp"是新手第一坑,选序前先想清楚要查什么。其二,格罗布纳基不是理想的最短表示:规范不等于精简,输出里可能出现冗余生成元,读的时候按需过滤;机器的规范形与手算的"最简形式"目标不同。其三,机器输出的是代数事实,几何解读仍归你:dim 报 1 之后,"这条一维分支是哪条直线"还要靠 radical 与分解补全——工具报数,人读图。
本节在知识体系里的位置:全册手算全部有机器复核,计算流程可带走复现。最后一节收拾行装——按你的方向选下一步的路线,并把常见误区清点入库。