一般环上的超椭圆曲线#

示例:

圣人:.<x个> = GF公司(5)[]
圣人:(f) = x个^5 - *x个^4 - 2*x个^ + 6*x个^2 + *x个 - 1
圣人:C类 = 超椭圆曲线((f)); C类
大小为5的有限域上的超椭圆曲线
由y^2=x^5+2*x^4+3*x^3+x^2+3*x+4定义
圣人:.<x个> = QQ(QQ)[]
圣人:(f) = 4*x个^5 - 30*x个^ + 45*x个 - 22
圣人:C类 = 超椭圆曲线((f)); C类
有理域上y^2=4*x^5-30*x^3+45*x-22定义的超椭圆曲线
圣人:C类.()
2

圣人:D类 = C类.仿射补丁(0)
圣人:D类.定义多项式()[0].父母()
有理域上x1,x2中的多元多项式环
sage.schemes.超椭圆曲线.超椭圆通用。超椭圆曲线_generic(聚丙烯,(f),小时=,姓名=,=)#

基础:投影平面曲线

基本扩展(_E)(R(右))#

在新基环上返回此超椭圆曲线R(右).

示例:

圣人:#需要sage.rings.padics
圣人:R(右).<x个> = QQ(QQ)[]
圣人:H(H) = 超椭圆曲线(x个^5 - 10*x个 + 9)
圣人:K(K) = Qp(质量计划)(, 5)
圣人:L(左).<> = K(K).延伸(x个^30 - )
圣人:香港 = H(H).更改(_R)(K(K))
圣人:HL公司 = 香港.更改(_R)(L(左)); HL公司
超椭圆曲线
由x^30-3定义的a中的3-adic Eisenstein扩张域
定义为(1+O(a^150))*y^2=(1+0(a^15))*x^5
+(2+2*a^30+a^60+2*a^90+2*a ^120+O(a^150))*x+a^60+O(a ^210)

圣人:R(右).<x个> = FiniteField公司(7)[]
圣人:H(H) = 超椭圆曲线(x个^8 + x个 + 5)
圣人:H(H).基本扩展(_E)(FiniteField公司(7^2, “a”))                                  #需要sage.rings.finite_ring
大小为7^2的有限域上的超椭圆曲线
由y^2=x^8+x+5定义
更改(_R)(R(右))#

在新基环上返回此超椭圆曲线R(右).

示例:

圣人:#需要sage.rings.padics
圣人:R(右).<x个> = QQ(QQ)[]
圣人:H(H) = 超椭圆曲线(x个^5 - 10*x个 + 9)
圣人:K(K) = Qp(质量计划)(, 5)
圣人:L(左).<> = K(K).延伸(x个^30 - )
圣人:香港 = H(H).更改(_R)(K(K))
圣人:HL公司 = 香港.更改(_R)(L(左)); HL公司
超椭圆曲线
由x^30-3定义的a中的3-adic Eisenstein扩张域
定义为(1+O(a^150))*y^2=(1+0(a^15))*x^5
+(2+2*a^30+a^60+2*a^90+2*a ^120+O(a^150))*x+a^60+O(a ^210)

圣人:R(右).<x个> = FiniteField公司(7)[]
圣人:H(H) = 超椭圆曲线(x个^8 + x个 + 5)
圣人:H(H).基本扩展(_E)(FiniteField公司(7^2, “a”))                                  #需要sage.rings.finite_ring
大小为7^2的有限域上的超椭圆曲线
定义为y^2=x^8+x+5
()#
has_add_degree_模型()#

如果定义域上存在奇数度的自我模型,则返回True;否则为False。

使用奇数_格列_模型计算奇数度模型。

示例:

圣人:x个 = QQ(QQ)[“x”].0
圣人:超椭圆曲线(x个^5 + x个).has_odd_degree_mode(具有地址协议模式)()
真的
圣人:超椭圆曲线(x个^6 + x个).has_add_degree_模型()
真的
圣人:超椭圆曲线(x个^6 + x个 + 1).has_add_degree_模型()
False(错误)
超椭圆多项式(K(K)=,无功功率,无功功率=“x”)#

示例:

圣人:R(右).<x个> = QQ(QQ)[]; C类 = 超椭圆曲线(x个^ + x个 - 1, x个^/5); C类
有理域上y^2+1/5*x^3*y=x^3+x-1定义的超椭圆曲线
圣人:C类.超椭圆多项式()
(x^3+x-1,1/5*x^3)
不变微分()#

退换商品\(dx/2y\)作为Monsky-Washnitzer上同调的一个元素自我的

示例:

圣人:R(右).<x个> = QQ(QQ)[“x”]
圣人:C类 = 超椭圆曲线(x个^5 - 4*x个 + 4)
圣人:C类.不变微分()
1 dx/2年
是奇异的(_S)()#

返回False,因为超椭圆曲线是平滑投影的曲线,如施工检查。

示例:

圣人:R(右).<x个> = QQ(QQ)[]
圣人:H(H) = 超椭圆曲线(x个^5 + 1)
圣人:H(H).是奇异的(_S)()
False(错误)

亏格至少为2的超椭圆曲线在无穷大,当被视为飞机投影曲线。这可以在中看到以下示例:

圣人:R(右).<x个> = QQ(QQ)[]
圣人:H(H) = 超椭圆曲线(x个^5 + 2)
圣人: sage.misc.verbose软件 进口 设置详细信息
圣人:设置(_V)(-1)
圣人:H(H).是奇异的(_S)()
False(错误)
圣人: sage.方案.曲线.项目_曲线 进口 投影平面曲线
圣人:投影平面曲线.是奇异的(_S)(H(H))
真的
是平滑的(_S)()#

返回True,因为超椭圆曲线是平滑投影的曲线,如在施工时检查的。

示例:

圣人:R(右).<x个> = GF公司(13)[]
圣人:H(H) = 超椭圆曲线(x个^8 + 1)
圣人:H(H).是平滑的(_S)()
真的

亏格至少为2的超椭圆曲线在无穷大,当被视为飞机投影曲线。这可以在中看到以下示例:

圣人:#需要sage.rings.finite_ring
圣人:R(右).<x个> = GF公司(27, “a”)[]
圣人:H(H) = 超椭圆曲线(x个^10 + 2)
圣人: sage.misc.verbose软件 进口 设置详细信息
圣人:设置详细信息(-1)
圣人:H(H).是平滑的(_S)()
真的
圣人: sage.方案.曲线.项目_曲线 进口 投影平面曲线
圣人:投影平面曲线.是平滑的(_S)(H(H))
False(错误)
is_x_字(x个)#

如果返回Truex个\(x \)-曲线上一点的坐标。

另请参见

另请参见lift_x()用给定的\(x \)-坐标。在以下情况下,此功能可能很有用测试基场元素是否为正方形比求平方根还要快。

输入:

  • x个–曲线底环的一个元素

输出:

说明是否\(x \)是曲线上某点的x坐标

示例:

何时\(x \)\(x \)-上有理点的坐标曲线,我们可以要求:

圣人:R(右).<x个> = 多项式环(QQ(QQ))
圣人:(f) = x个^5 + x个^ + 1
圣人:H(H) = 超椭圆曲线((f))
圣人:H(H).is_x_字(0)
真的

没有理性的观点\(x \)-坐标3:

圣人:H(H).is_x_字()
False(错误)

该函数还处理以下情况\(h(x)\)不为零:

圣人:R(右).<x个> = 多项式环(QQ(QQ))
圣人:(f) = x个^5 + x个^ + 1
圣人:小时 = x个 + 1
圣人:H(H) = 超椭圆曲线((f), 小时)
圣人:H(H).is_x_字(1)
真的

我们也可以在有限域上执行这些操作:

圣人:#需要sage.rings.finite_ring
圣人:R(右).<x个> = 多项式环(GF公司(163))
圣人:(f) = x个^7 + x个 + 1
圣人:H(H) = 超椭圆曲线((f))
圣人:H(H).is_x_字(13)
真的

包括特征二的情况:

圣人:#需要sage.rings.finite_ring
圣人:F类.<z4(零4)> = GF公司(2^4)
圣人:R(右).<x个> = 多项式环(F类)
圣人:(f) = x个^7 + x个^ + 1
圣人:小时 = x个 + 1
圣人:H(H) = 超椭圆曲线((f), 小时)
圣人:H(H).is_x_字(z4(零4)^ + z4(零4)^2 + z4(零4))
真的

作者:

雅可比人()#
提升_x(x个,全部的=False(错误))#

返回给定的一个或所有点\(x \)-坐标。

此方法是确定性的:它每次返回相同的数据再次调用相同的时间\(x \).

输入:

  • x个–曲线基环的元素

  • 全部的(布尔,默认False(错误))–如果真的,返回一个所有点的列表(可能为空);如果False(错误),返回只要一分,或提出一个值错误如果没有。

输出:

此曲线上最多包含两个点的点或列表。

另请参见

is_x_coord()

作者:

  • 贾科莫·波普(2024):允许出现特征二的情况

示例:

何时\(x \)\(x \)-有理点的坐标曲线,我们可以要求:

圣人:R(右).<x个> = 多项式环(QQ(QQ))
圣人:(f) = x个^5 + x个^ + 1
圣人:H(H) = 超椭圆曲线((f))
圣人:H(H).提升_x(0)
(0 : -1 : 1)
圣人:H(H).提升_x(4, 全部的=真的)
[(4 : -33 : 1), (4 : 33 : 1)]

没有理性的观点\(x \)-坐标3:

圣人:H(H).提升_x()
回溯(最近一次调用):
...
ValueError:有理域上的超椭圆曲线上没有x坐标为3的点,由y^2=x^5+x^3+1定义

当没有点并且all=真:

圣人:H(H).提升_x(, 全部的=真的)
[]

该函数还处理以下情况\(h(x)\)不为零:

圣人:R(右).<x个> = 多项式环(QQ(QQ))
圣人:(f) = x个^5 + x个^ + 1
圣人:小时 = x个 + 1
圣人:H(H) = 超椭圆曲线((f), 小时)
圣人:H(H).提升_x(1)
(1 : -3 : 1)

我们也可以在有限域上执行这些操作:

圣人:#需要sage.rings.finite_ring
圣人:R(右).<x个> = 多项式环(GF公司(163))
圣人:(f) = x个^7 + x个 + 1
圣人:H(H) = 超椭圆曲线((f))
圣人:H(H).提升_x(13)
(13 : 41 : 1)

包括特征二的情况:

圣人:#需要sage.rings.finite_ring
圣人:F类.<z4(零4)> = GF公司(2^4)
圣人:R(右).<x个> = 多项式环(F类)
圣人:(f) = x个^7 + x个^ + 1
圣人:小时 = x个 + 1
圣人:H(H) = 超椭圆曲线((f), 小时)
圣人:H(H).提升_x(z4型^ + z4(零4)^2 + z4(零4), 全部的=真的)
[(z4^3+z4^2+z4:z4^2+z4+1:1),(z4*3+z4*2+z4:z4^3:1)]
本地字(,前c=20,名称=“t”)#

调用适当的local_coordes函数

输入:

  • –自我评价

  • 前c–所需的局部坐标精度

  • 名称–电源串联环的发电机(默认值:t吨)

输出:

\((x(t),y(t))\)这样的话\(y(t)^2=f(x(t))\),其中\(t\)是位于的局部参数\(P\)

示例:

圣人:R(右).<x个> = QQ(QQ)[“x”]
圣人:H(H) = 超椭圆曲线(x个^5 - 23*x个^ + 18*x个^2 + 40*x个)
圣人:H(H).本地字(H(H)(1 ,6), 前c=5)
(1+t+O(t^5),6+t-7/2*t^2-1/2*t^3-25/48*t^4+O(t ^5))
圣人:H(H).本地字(H(H)(4, 0), 前c=7)
(4+1/360*t^2-191/23328000*t^4+7579/188956800000*t^6+O(t^7),t+O(t ^7))
圣人:H(H).本地字(H(H)(0, 1, 0), 前c=5)
(t^-2+23*t^2-18*t^4-569*t^6+O(t^7),
t^-5+46*t^-1-36*t-609*t^3+1656*t*t^5+O(t^6))

作者:

  • Jennifer Balakrishnan(2007-12)

本地坐标at_infinity(前c=20,名称=“t”)#

对于这个属\(克\)超椭圆曲线\(y^2=f(x)\),返回\((x(t),y(t))\)这样的话\(y(t))^2=f(x(t),其中\(t=x^g/y)无穷远处的局部参数

输入:

  • 前c–局部坐标的所需精度

  • 名称–功率串联环的发电机(默认值:t吨)

输出:

\((x(t),y(t))\)这样的话\(y(t)^2=f(x(t))\)\(t=x^g/y)是无穷远处的局部参数

示例:

圣人:R(右).<x个> = QQ(QQ)[“x”]
圣人:H(H) = 超椭圆曲线(x个^5 - 5*x个^2 + 1)
圣人:x个,  = H(H).本地坐标at_infinity(10)
圣人:x个
t^-2+5*t^4-t^8-50*t^10+O(t^12)
圣人:
t^-5+10*t-2*t^5-75*t^7+50*t^11+O(t^12)
圣人:R(右).<x个> = QQ(QQ)[“x”]
圣人:H(H) = 超椭圆曲线(x个^ - x个 + 1)
圣人:x个,  = H(H).本地坐标at_infinity(10)
圣人:x个
t^-2+t^2-t^4-t^6+3*t^8+O(t^12)
圣人:
t^-3+t-t^3-t^5+3*t^7-10*t^11+O(t^12)

作者:

  • Jennifer Balakrishnan(2007-12)

本地坐标at_nonweierstrass(,前c=20,名称=“t”)#

对于非Weierstrass点\(P=(a,b)\)关于超椭圆曲线\(y^2=f(x)\),返回\((x(t),y(t))\)这样的话\(y(t))^2=f(x(t),哪里\(t=x-a\)是局部参数。

输入:

  • = (a), b)–非Weierstrass点

  • 前c–所需的局部坐标精度

  • 名称–电源串联环的发电机(默认值:t吨)

输出:

\((x(t),y(t))\)这样的话\(y(t)^2=f(x(t))\)\(t=x-a\)是位于的局部参数\(P\)

示例:

圣人:R(右).<x个> = QQ(QQ)[“x”]
圣人:H(H) = 超椭圆曲线(x个^5 - 23*x个^ + 18*x个^2 + 40*x个)
圣人: = H(H)(1, 6)
圣人:x个,  = H(H).本地坐标_at_nonweierstrass(, 前c=5)
圣人:x个
1+t+O(t^5)
圣人:
6+t-7/2*t^2-1/2*t^3-25/48*t^4+O(t^5)
圣人: = H(H)(-2, 12)
圣人:x个,  = H(H).本地坐标_at_nonweierstrass(, 前c=5)
圣人:x个
-2+t+O(t^5)
圣人:
12-19/2*t-19/32*t^2+61/256*t^3-5965/24576*t^4+O(t^5)

作者:

  • Jennifer Balakrishnan(2007-12)

本地坐标at_weierstrass(,前c=20,名称=“t”)#

超椭圆上有限Weierstrass点曲线\(y^2=f(x)\),返回\((x(t),y(t))\)这样的话\(y(t))^2=f(x(t),其中\(t=y)是局部参数。

输入:

  • –自我上的有限Weierstrass点

  • 前c–所需的局部坐标精度

  • 名称–电源串联环的发电机(默认值:\(t\))

输出:

\((x(t),y(t))\)这样的话\(y(t)^2=f(x(t))\)\(t=y)是位于的局部参数\(P\)

示例:

圣人:R(右).<x个> = QQ(QQ)[“x”]
圣人:H(H) = 超椭圆曲线(x个^5 - 23*x个^ + 18*x个^2 + 40*x个)
圣人:A类 = H(H)(4, 0)
圣人:x个,  = H(H).本地坐标at_weierstrass(A类, 前c=7)
圣人:x个
4+1/360*t^2-191/23328000*t^4+7579/188956800000*t^6+O(t^7)
圣人:
t+O(t^7)
圣人:B类 = H(H)(-5, 0)
圣人:x个,  = H(H).本地坐标at_weierstrass(B类, 前c=5)
圣人:x个
-5+1/1260*t^2+887/2000376000*t^4+O(t^5)
圣人:
t+O(t^5)
作者:
  • Jennifer Balakrishnan(2007-12)

    • 弗朗西斯·克拉克(2012-08-26)

怪物洗衣机()#
奇数_格列_模型()#

返回self的奇数阶模型,如果定义字段上不存在ValueError,则引发ValueError。

示例:

圣人:x个 = QQ(QQ)[“x”].消息()
圣人:H(H) = 超椭圆曲线((x个^2 + 2)*(x个^2 + )*(x个^2 + 5)); H(H)
有理域上y^2=x^6+10*x^4+31*x^2+30定义的超椭圆曲线
圣人:H(H).奇数模式()
回溯(最近一次调用):
...
ValueError:定义字段上不存在奇数度模型

圣人:K2(K2) = 象限域(-2, “a”)                                          #需要sage.rings.number_field
圣人:血红蛋白2 = H(H).更改(_R)(K2(K2)).奇数_格列_模型(); 血红蛋白2                       #需要sage.rings.number_field
数域上的超椭圆曲线
定义多项式x^2+2,a=1.414213562373095*
定义为y^2=6*a*x^5-29*x^4-20*x^2+6*a*x+1

圣人:K3公司 = 象限域(-, “b”)                                          #需要sage.rings.number_field
圣人:血红蛋白3 = H(H).更改(_R)(象限域(-, “b”)).奇数_格列_模型(); 血红蛋白3  #需要sage.rings.number_field
b中数域上的超椭圆曲线
定义多项式x^2+3,b=1.732050807568878*
由y^2=-4*b*x^5-14*x^4-20*b*x ^3-35*x^2+6*b*x1定义

当然,``Hp2``和``Hp3``在复合上是同构的
扩展。其结果之一是奇数度模型
“不同”字段上的缩减应具有相同数量的
对他们的削减进行评分。43和67在
因此,当我们减少时,我们会发现:

圣人:#需要sage.rings.number_field
圣人:第2页 = K2(K2).因素(43)[0][0]
圣人:第3页 = K3公司.因素(43)[0][0]
圣人:血红蛋白2.更改(_R)(K2(K2).剩余字段(第2页)).frobenius多项式()
x^4-16*x^3+134*x^2-688*x+1849
圣人:血红蛋白3.更改(_R)(K3公司.剩余字段(第3页)).弗罗贝尼乌斯多项式()
x^4-16*x^3+134*x^2-688*x+1849

圣人:H(H).更改(_R)(GF公司(43)).奇数_格列_模型().弗罗贝尼乌斯多项式()       #需要sage.rings.finite_ring
x^4-16*x^3+134*x^2-688*x+1849

圣人:#需要sage.rings.number_field
圣人:第2页 = K2(K2).因素(67)[0][0]
圣人:第3页 = K3公司.因素(67)[0][0]
圣人:血红蛋白2.更改(_R)(K2(K2).剩余字段(第2页)).frobenius多项式()
x^4-8*x^3+150*x^2-536*x+4489
圣人:血红蛋白3.更改(_R)(K3公司.剩余字段(第3页)).frobenius多项式()
x^4-8*x^3+150*x^2-536*x+4489

圣人:H(H).更改(_R)(GF公司(67)).奇数_格列_模型().frobenius多项式()       #需要sage.rings.finite_ring
x^4-8*x^3+150*x^2-536*x+4489
理性点(**千瓦时)#

找到超椭圆曲线上的有理点,所有参数都被传递上的到sage.schemes.generic.algebraic_scheme.rational_points().

示例:

对于LMFDB亏格2曲线公元932年3728.1:

圣人:R(右).<x个> = 多项式环(QQ(QQ))
圣人:C类 = 超椭圆曲线(R(右)([0, -1, 1, 0, 1, -2, 1]), R(右)([1]))
圣人:C类.理性点(跳跃=8)
[(-1 : -3 : 1),
(-1 : 2 : 1),
(0 : -1 : 1),
(0 : 0 : 1),
(0 : 1 : 0),
(1/2 : -5/8 : 1),
(1/2 : -3/8 : 1),
(1 : -1 : 1),
(1:0:1)]

检查一下github问题#29509对于LMFDB亏格2曲线是固定的公元169年169.1年:

圣人:C类 = 超椭圆曲线(R(右)([0, 0, 0, 0, 1, 1]), R(右)([1, 1, 0, 1]))
圣人:C类.理性点(跳跃=10)
[(-1 : 0 : 1),
(-1 : 1 : 1),
(0 : -1 : 1),
(0 : 0 : 1),
(0 : 1 : 0)]

数字字段的示例:

圣人:R(右).<x个> = 多项式环(象限域(2))                             #需要sage.rings.number_field
圣人:C类 = 超椭圆曲线(R(右)([1, 0, 0, 0, 0, 1]))                         #需要sage.rings.number_field
圣人:C类.理性点(跳跃=2)                                            #需要sage.rings.number_field
[(-1 : 0 : 1),
(0 : -1 : 1),
(0 : 1 : 0),
(0 : 1 : 1),
(1:-a:1),
(1:a:1)]
sage.schemes.超椭圆曲线.超椭圆通用。是_超链接曲线(C类)#

示例:

圣人: sage.schemes.超椭圆曲线.超椭圆通用 进口 是_超链接曲线
圣人:R(右).<x个> = QQ(QQ)[]; C类 = 超椭圆曲线(x个^ + x个 - 1); C类
有理域上y^2=x^3+x-1定义的超椭圆曲线
圣人:是_超链接曲线(C类)
真的