魏尔斯特拉斯\(\wp\)-椭圆曲线函数#

魏尔斯特拉斯\(\wp\)与a上椭圆曲线相关的函数领域\(k\)是一个Laurent系列的形式

\[\wp(z)=\frac{1}{z^2}+c2\cdot z^2+c4\cdot z*4+\cdots.\]

如果字段包含在\(\mathbb{C}\),那么这就是系列地图的展开\(\mathbb{C}\)\(E(\mathbb{C})\)其内核是的周期格\(E).

在其他字段(如有限字段)上,作为系数为的形式幂级数\(k\)-至少是第一次\(第2页)系数,其中\(p\)是的特征\(k\).可以定义通过正式团队\(x+c \)在变量中\(z=\log_E(t)\)对于常数\(c)这样常数项\(c_0\)在里面\(\wp(z)\)为零。

示例:

圣人:E类 = 椭圆曲线([0,1])
圣人:E类.韦尔斯特拉斯p()
z^-2-1/7*z^4+1/637*z^10-1/84721*z^16+O(z^20)

参考文献:

作者:

  • Dan Shumov 04/09:最初实施

  • Chris Wuthrich 11/09:重大重组

  • Jeroen Demeyer(2014-03-06):代码清理,修复特征绑定对于二次算法(参见github发行号15855)

sage.schemes.elliptic_curves.ell_wp。计算_wp_fast(k个,A类,B类,)#

计算由短Weierstrass模型定义的椭圆曲线的Weiersstrass函数:\(y^2=x^3+Ax+B\)。它的速度与次数多项式一样快\(米\)可以倍增在基环中,即。\(O(M(n))\)用符号表示【BMSS2006】.

\(p\)是潜在领域的特征:那么我们必须有\(p=0),或\(p>m+3\).

输入:

  • k个–曲线的基础场

  • A类–和

  • B类–作为短Weierstrass模型的系数\(y^2=x^3+Ax+B\)、和

  • –函数计算到的精度。

输出:

魏尔斯特拉斯\(\wp\)作为一个精确的罗朗级数\(米\).

算法:

此函数使用第3.3节中描述的算法【BMSS2006】.

示例:

圣人: sage.schemes.elliptic_curves.ell_wp 进口 计算_wp_fast
圣人:计算_wp_fast(QQ(QQ), 1, 8, 7)
z^-2-1/5*z^2-8/7*z^4+1/75*z^6+O(z^7)

圣人:k个 = GF公司(37)
圣人:计算_wp_fast(k个, k个(1), k个(8), 5)
z^-2+22*z^2+20*z^4+O(z^5)
sage.schemes.elliptic_curves.ell_wp。计算机_wp_pari(E类,前c)#

计算Weierstrass\(\wp\)-函数ellwp公司功能来自PARI。

示例:

圣人:E类 = 椭圆曲线([0,1])
圣人: sage.schemes.elliptic_curves.ell_wp 进口 计算机_wp_pari
圣人:计算机程序(E类, 前c=20)
z^-2-1/7*z^4+1/637*z^10-1/84721*z^16+O(z^20)
圣人:计算机_wp_pari(E类, 前c=30)
z^-2-1/7*z^4+1/637*z^10-1/84721*z^16
+3/38548055*z^22-4/8364927935*z^28+O(z^30)
sage.schemes.elliptic_curves.ell_wp。计算_wp_quadratic(k个,A类,B类,前c)#

计算椭圆曲线的截断Weierstrass函数由短Weierstrass模型定义:\(y^2=x^3+Ax+B\)。使用复杂的算法\(O(前^2)\).

设p是基础字段的特征。那我们必须p=0或p>prec+2。

输入:

  • k个–曲线定义字段

  • A类–和

  • B类–椭圆曲线的系数

  • 前c–我们计算级数的精度。

输出:

近似Weierstrass的Laurent级数\(\wp\)-函数到精度前c.

算法:

此函数使用的是【BMSS2006】.

示例:

圣人:E类 = 椭圆曲线([7,0])
圣人:E类.韦尔斯特拉斯p(前c=10, 算法=“二次”)
z^-2-7/5*z^2+49/75*z^6+O(z^10)

圣人:E类 = 椭圆曲线(GF公司(103), [1,2])
圣人:E类.韦尔斯特拉斯p(算法=“二次型”)
z^-2+41*z^2+88*z^4+11*z^6+57*z^8+55*z^10+73*z^12
+11*z^14+17*z^16+50*z^18+O(z^20)

圣人: sage.schemes.elliptic_curves.ell_wp 进口 计算_wp_quadratic
圣人:计算_wp_quadratic(E类.底座(_R)(), E类.a4(), E类.a6类(), 前c=10)
z^-2+41*z^2+88*z^4+11*z^6+57*z^8+O(z^10)
sage.schemes.elliptic_curves.ell_wp。求解线性微分系统(,b条,c(c),阿尔法)#

求解线性微分方程组:\(af'+bf=c\)\(f’(0)=α哪里\(a),\(b)、和\(c)是一个变量中的幂级数\(\字母\)是系数环中的常数。

算法:

因为Brent和Kung’78。

示例:

圣人: sage.schemes.elliptic_curves.ell_wp 进口 求解线性微分系统
圣人:k个 = GF公司(17)
圣人:R(右).<x个> = PowerSeriesRing系列(k个)
圣人: = 1 + x个 + O(运行)(x个^7); b条 = x个 + O(运行)(x个^7); c(c) = 1 + x个^ + O(运行)(x个^7); 阿尔法 = k个()
圣人:(f) = 求解线性微分系统(, b条, c(c), 阿尔法)
圣人:(f)
3+x+15*x^2+x^3+10*x^5+3*x^6+13*x^7+O(x^8)
圣人:*(f).导数() + b条*(f) - c(c)
O(x ^7)
圣人:(f)(0) == 阿尔法
真的
sage.schemes.elliptic_curves.ell_wp。韦尔斯特拉斯p(E类,前c=20,算法=)#

计算Weierstrass\(\wp\)-椭圆曲线上的函数。

输入:

  • E类–椭圆曲线

  • 前c–精度

  • 算法–字符串或(默认值:):算法的选择“同等”,“快速”,“二次”;让此函数确定要使用的最佳算法。

输出:

一个变量中的Laurent级数\(z)底部有系数领域\(k\)属于\(E).

示例:

圣人:E类 = 椭圆曲线(“11a1”)
圣人:E类.韦尔斯特拉斯p(前c=10)
z^-2+31/15*z^2+2501/756*z^4+961/675*z^6+77531/41580*z^8+O(z^10)
圣人:E类.魏尔斯特拉斯(前c=8)
z^-2+31/15*z^2+2501/756*z^4+961/675*z*6+O(z^8)
圣人:埃什 = E类.short_weierstrass_模型()
圣人:埃什.韦尔斯特拉斯p(前c=8)
z^-2+13392/5*z^2+1080432/7*z^4+59781888/25*z^6+O(z^8)

圣人:E类.韦尔斯特拉斯p(前c=8, 算法=“同等”)
z^-2+31/15*z^2+2501/756*z^4+961/675*z^6+O(z^8)
圣人:E类.韦尔斯特拉斯p(前c=8, 算法=“二次”)
z^-2+31/15*z^2+2501/756*z^4+961/675*z*6+O(z^8)

圣人:k个 = GF公司(11)
圣人:E类 = 椭圆曲线(k个, [1,1])
圣人:E类.韦尔斯特拉斯p(前c=6, 算法=“快速”)
z^-2+2*z^2+3*z^4+O(z^6)
圣人:E类.韦尔斯特拉斯p(前c=7, 算法=“快速”)
追踪(最近一次通话):
...
ValueError:对于通过快速算法计算Weierstrass p函数,
基础字段的特征(11)必须大于prec+4=11
圣人:E类.韦尔斯特拉斯p(前c=8)
z^-2+2*z^2+3*z^4+5*z^6+O(z^8)
圣人:E类.韦尔斯特拉斯p(前c=8, 算法=“二次”)
z^-2+2*z^2+3*z^4+5*z^6+O(z^8)
圣人:E类.韦尔斯特拉斯p(前c=8, 算法=“同等”)
z^-2+2*z^2+3*z^4+5*z^6+O(z^8)
圣人:E类.韦尔斯特拉斯p(前c=9)
追踪(最近一次通话):
...
NotImplementedError:目前没有计算Weierstrass的算法
实现了该特征/精度对的p函数。
将精度降低到char(k)-2以下
圣人:E类.韦尔斯特拉斯p(前c=9, 算法=“二次”)
追踪(最近一次通话):
...
ValueError:用于通过二次方计算Weierstrass p函数
算法,基础字段的特征(11)必须更大
比prec+2=11
圣人:E类.魏尔斯特拉斯(前c=9, 算法=“平价”)
追踪(最近一次通话):
...
ValueError:对于通过pari计算Weierstrass p函数
基础字段的特征(11)必须大于prec+2=11