椭圆曲线的Weierstrass模型之间的同构#

作者:

  • Robert Bradshaw(2007):初始版本

  • 约翰·克雷莫纳(2008年1月):同构、自同构和扭曲在所有特征中

  • Lorenz Panny(2021):椭圆曲线Hom接口

sage.schemes.elliptic_curves.weierstrass_morphism。魏尔斯特拉斯同构(E类=,爆发=,F类=)#

基础:椭圆曲线Hom,基本WI

表示两条椭圆曲线之间的Weierstrass同构的类。

输入:

  • E类–一个椭圆曲线,或(见下文)。

  • 爆发–4元组\((u,r,s,t)\),一个基本WI对象,(见下文)。

  • F类–一个椭圆曲线,或(见下文)。

给定两条椭圆曲线E类F类(代表:Weierstrass模型)和转换爆发E类F类,从中构造同构E类F类.如果出现以下情况,则会引发异常突发事件(E) != F类。最多一个E类,F类,爆发可以是。在这种情况下,缺少的输入是由其他人以这样的方式构建突发事件(E) == F类持有,如果这不可能(通常是因为E类F类不是同构的)。

用户通常不需要直接使用此类,而是使用方法,如同构_to()同构().

显然,同构由\((u,r,s,t)\)映射点\((x,y)\)切中要害

\[((x-r)/u^2,\;(y-s(x-r

如果域\(E)具有Weierstrass系数\([a1,a2,a3,a4,a6]\),密码子\(F\)由提供

\[\开始{拆分}a_1'&=(a_1+2s)/u\\a_2'&=(a_2-a_1s+3r-s^2)/u^2\\a3'&=(a3+a1r+2t)/u^3\\a4'&=(a4+2a2r-a1(rs+t)-a3s+3r^2-2st)/u^4\\a6'&=(a6-a1rt+a2r^2-a3t+a4r+r^3-t^2)/u^6。\结束{拆分}\]

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 *
圣人:魏尔斯特拉斯同构(椭圆曲线([0,1,2,,4]), (-1,2,,4))
椭圆曲线态射:
自:有理域上由y^2+2*y=x^3+x^2+3*x+4定义的椭圆曲线
收件人:有理域上由y^2-6*x*y-10*y=x^3-2*x^2-11*x-2定义的椭圆曲线
通过:(u,r,s,t)=(-1,2,3,4)
圣人:E类 = 椭圆曲线([0,1,2,,4])
圣人:F类 = 椭圆曲线(E类.克雷莫纳标签())
圣人:魏尔斯特拉斯同构(E类, , F类)
椭圆曲线形态:
自:有理域上由y^2+2*y=x^3+x^2+3*x+4定义的椭圆曲线
收件人:有理域上由y^2=x^3+x^2+3*x+5定义的椭圆曲线
通过:(u,r,s,t)=(1,0,0,-1)
圣人: = 魏尔斯特拉斯同构(, (1,0,0,-1), F类)
圣人:._领域 == E类
真的
二重的()#

返回此同构的对偶同构。

对于同构,对偶就是逆的。

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 魏尔斯特拉斯同构
圣人:E类 = 椭圆曲线(象限域(-), [0,1])                          #需要sage.rings.number_field
圣人: = 魏尔斯特拉斯同构(E类, (圆域(CyclotomicField)().消息(),0,0,0))       #需要sage.rings.number_field
圣人:(.二重的() * ).理性地图()                                        #需要sage.rings.number_field
(x,y)
圣人:E1级 = 椭圆曲线([11,22,33,44,55])
圣人:E2级 = E1级.short_weierstrass_模型()
圣人:国际标准化组织 = E1级.同构to(E2级)
圣人:国际标准化组织.二重的() == ~国际标准化组织
真的
不可分割_度()#

返回此Weierstrass同构的不可分割程度。

对于同构,此方法始终返回一个。

身份(_I)()#

检查Weierstrass同构是否为同一性。

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 魏尔斯特拉斯同构
圣人:第页 = 97
圣人:Fp公司 = GF公司(第页)
圣人:E类 = 椭圆曲线(Fp公司, [1, 28])
圣人:ws公司 = 魏尔斯特拉斯同构(E类, , E类)
圣人:ws公司.is_标识()
False(错误)
圣人: sage.schemes.椭圆曲线.wierstras_同构 进口 魏尔斯特拉斯同构
圣人:第页 = 97
圣人:Fp公司 = GF公司(第页)
圣人:E类 = 椭圆曲线(Fp公司, [1, 28])
圣人:ws公司 = 魏尔斯特拉斯同构(E类, (1, 0, 0, 0), )
圣人:ws公司.身份(_I)()
真的
核多项式()#

返回此同构的核多项式。

根据定义,同构具有平凡的内核,因此方法始终返回\(1).

示例:

圣人:E1级 = 椭圆曲线([11,22,33,44,55])
圣人:E2级 = 椭圆曲线_from_j(E1级.j_变量())
圣人:国际标准化组织 = E1级.同构to(E2级)
圣人:国际标准化组织.核多项式()
1
圣人:磅/平方英寸 = E1级.同生(国际标准化组织.核多项式(), 密码子=E2级); 磅/平方英寸
1级同构
根据y^2+11*x*y+33*y=x^3+22*x^2+44*x+55定义的椭圆曲线
在有理字段上
到由y^2+x*y=x^3+x^2-684*x+6681定义的椭圆曲线
在有理字段上
圣人:磅/平方英寸 在里面 {国际标准化组织, -国际标准化组织}
真的
秩序()#

如果这个Weierstrass同构是自同构,那么计算它的阶。

A类值错误如果域不等于余域,则引发。

A类未实现错误如果自同构的阶不是1、2、3、4或6,则引发。

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 *
圣人:第页 = 97
圣人:Fp公司 = GF公司(第页)
圣人:E类 = 椭圆曲线(Fp公司, [1, 28])
圣人:ws公司 = 魏尔斯特拉斯同构(E类, , E类)
圣人:ws公司.秩序()
2
理性地图()#

返回定义此同构的一对有理映射。

示例:

圣人:E1级 = 椭圆曲线([11,22,33,44,55])
圣人:E2级 = 椭圆曲线_from_j(E1级.j_变量())
圣人:国际标准化组织 = E1级.同构to(E2级); 国际标准化组织
椭圆曲线形态:
自:由y^2+11*x*y+33*y=x^3+22*x^2+44*x+55定义的椭圆曲线
在有理字段上
收件人:由y^2+x*y=x^3+x^2-684*x+6681定义的椭圆曲线
在有理字段上
通过:(u,r,s,t)=(1,-17,-5,77)
圣人:国际标准化组织.理性地图()
(x+17,5*x+y+8)
圣人:(f) = E2级.定义_多项式()(*国际标准化组织.理性地图(), 1)
圣人: = E1级.定义_理想()
圣人:x个,,z(z) = .戒指().氏族()
圣人:(f) 在里面  + 理想(z(z)-1)
真的
圣人:#需要sage.rings.finite_ring
圣人:E类 = 椭圆曲线(GF公司(65537), [1,1,1,1,1])
圣人: = E类.同构(E类.short_weierstrass_模型())
圣人:(f), = .理性地图()
圣人: = E类.随机点()
圣人:().xy公司() == ((f)(.xy公司()), (.xy公司()))
真的
缩放因子()#

返回与此关联的Weierstrass比例因子魏尔斯特拉斯同构。

比例因子为常数\(u\)(在基本场中)这样的话\(\varphi^*\omega_2=u\omega_1\),其中\(\varphi:E_1\到E_2\)这是同构吗\(\欧米茄_i \)标准Weierstrass差速器\(E_i\)由定义\(\mathrm dx/(2y+a_1x+a_3)\).

示例:

圣人:E类 = 椭圆曲线(QQbar(QQbar), [0,1])                                       #需要sage.rings.number_field
圣人:全部的((f).缩放因子() == (f).正式的()[1] 对于 (f) 在里面 E类.自同构())   #需要sage.rings.number_field
真的

算法:比例因子等于\(u\)的组件元组\((u,r,s,t)\)定义同构。

x国家地图()#

返回\(x \)-这个同构的坐标有理映射。

示例:

圣人:E1级 = 椭圆曲线([11,22,33,44,55])
圣人:E2级 = 椭圆曲线_from_j(E1级.j_变量())
圣人:国际标准化组织 = E1级.同构to(E2级); 国际标准化组织
椭圆曲线形态:
自:由y^2+11*x*y+33*y=x^3+22*x^2+44*x+55定义的椭圆曲线
在有理字段上
收件人:由y^2+x*y=x^3+x^2-684*x+6681定义的椭圆曲线
在有理字段上
通过:(u,r,s,t)=(1,-17,-5,77)
圣人:国际标准化组织.x国家地图()
x+17
圣人:国际标准化组织.x国家地图() == 国际标准化组织.理性地图()[0]
真的
sage.schemes.elliptic_curves.weierstrass_morphism。基本WI(u个=1,=0,=0,t吨=0)#

基础:对象

这个类实现了之间的同构的基本算法椭圆曲线的Weierstrass模型。

这些由表单列表指定\([u,r,s,t]\)(带有\(用户0))指定转换\((x,y)\映射到(x',y')\)哪里

\((x,y)=(u^2x'+r,u^3y'+su^2x'+t)

输入:

  • u、 r、s、t(默认值\((1,0,0,0)\))–标准参数Weierstrass模型之间的同构。

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 *
圣人:基本WI()
(1, 0, 0, 0)
圣人:基本WI(2,,4,5)
(2, 3, 4, 5)
圣人:R(右).<u个,,,t吨> = QQ(QQ)[]
圣人:基本WI(u个,,,t吨)
(u,r,s,t)
身份(_I)()#

返回真的如果这是身份同构。

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 *
圣人: = 基本WI(); .身份(_I)()
真的
圣人: = 基本WI(2,,4,5); .is_标识()
False(错误)
元组()#

返回参数\(u,r,s,t\)作为元组。

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 *
圣人: = 基本WI(2,,4,5)
圣人:.元组()
(2, 3, 4, 5)
sage.schemes.elliptic_curves.weierstrass_morphism。恒等同态(E类)#

给定一条椭圆曲线\(E),返回标识形态\(E)作为一个魏尔斯特拉斯同构.

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 恒等同态
圣人:E类 = 椭圆曲线([5,6,7,8,9])
圣人:标识_ = 恒等同态(E类)
圣人:标识_.理性地图()
(x,y)
sage.schemes.elliptic_curves.weierstrass_morphism。否定形态(E类)#

给定一条椭圆曲线\(E),返回否定自同态\([-1]\)属于\(E)作为一个魏尔斯特拉斯同构.

示例:

圣人: sage.schemes.elliptic_curves.weierstrass_形态 进口 否定形态
圣人:E类 = 椭圆曲线([5,6,7,8,9])
圣人:否定 = 否定形态(E类)
圣人:否定.理性地图()
(x,-5*x-y-7)