You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SageMath构造椭圆曲线同源遇参数错误,求正确实现方法

椭圆曲线同源构造错误分析与解决

错误原因

  • 多项式环不匹配:你创建了四元多项式环R.<x,y,z,t>,但E.isogeny()要求核多项式必须是椭圆曲线基域(GF(43))上的单变量多项式(即GF(43)[x]的元素),多变量环的元素无法被函数解析。
  • 核多项式结构无效:你的多项式(x-37)^2*(x-40)^2存在冗余重数,椭圆曲线同源的核是有限子群,子群中非单位点的x坐标作为多项式根时,无需重复平方——这种错误的重数会导致函数无法识别对应的合法子群。

正确构造方式

方式1:通过子群生成元直接构造

先定位目标核子群的生成元,将生成元或子群对象传入E.isogeny():

# 初始化基域与椭圆曲线
F = GF(43)
# 用Weierstrass标准形式定义曲线(对应y² = x³ -14x² -6x +17)
E1 = EllipticCurve(F, [-14, -6, 0, 0, 17])

# 找到核子群的2阶点(对应你多项式中的根)
# 求解y=0时的x根,即2阶点的x坐标
poly = x^3 -14*x^2 -6*x +17
roots = poly.roots(F)
P = E1(roots[0][0], 0)
Q = E1(roots[1][0], 0)

# 生成目标子群(论文示例2.5中的4阶子群)
target_subgroup = E1.subgroup([P, Q])

# 构造同源
phi = E1.isogeny(target_subgroup)

方式2:使用合法的单变量核多项式

若坚持用核多项式构造,需确保多项式是核子群所有非单位点x坐标的无重数乘积:

# 定义单变量多项式环
R.<x> = F[]

# 计算P+Q的x坐标(子群中的第三个非单位点)
PQ = P + Q
# 构造核多项式:包含所有非单位点的x坐标
kernel_poly = (x - P[0]) * (x - Q[0]) * (x - PQ[0])

# 生成同源
phi = E1.isogeny(kernel_poly)

关键注意事项

  • E.isogeny()的核多项式参数,其根必须严格对应核子群中所有非单位点的x坐标:2阶点(y=0)仅对应一个根,非2阶点则每个x坐标对应两个点(±y),但多项式只需包含一次该x因子。
  • 始终使用曲线基域上的单变量多项式环,不要引入无关变量。

内容的提问来源于stack exchange,提问作者stillconfused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:37:16