SageMath使用指南——笔记

最近学习了一下SageMath中的函数,在这里做个笔记,以供大家学习和参考。

1. random_prime(n,proof=None,lbound=2)

  • 该函数返回一个随机数 介于 lbound 和 n 之间,即从小于或等于n的素数集中随机选择返回的素数p。

  • 其中proof : bool类型或None(默认值:None)如果为False,则该函数使用伪素数测试,对于真正大的数,该测试快得多,但不提供素数证明。 如果为None,则使用全局默认值(请参阅“ sage.structure.proof.proof”)

2. FiniteField()

  • 该函数返回给定阶数的全局唯一有限域,该域具有由给定名称标记的生成器,并可能带有给定模数。

  • 别名:您也可以使用“ GF”代替“ FiniteField”,它们是相同的。

  • 参数:

  • order:一个素数

  • name: 字符串,可选。请注意,省略变量名称时(创建扩展字段)可能会有很大的速度损失,因为这样做会触发伪Conway多项式的计算,以定义素数字段扩展的连贯格。速度惩罚随着延伸度的大小和延伸度的因素的数量而增加。

  • modulus: (可选)字段的定义多项式,或指定用于生成此类多项式的算法的字符串。如果“ modulus”是字符串,则将其作为参数“ algorithm”传递给“ irreducible_element()”;有关该参数的允许值,请参见此处。特别是,您可以指定“ modulus =” primitive“”以获得基本多项式。如果不指定变量名,则可以不指定模数。

  • impl:(可选)一个字符串,用于指定有限域的实现。可能的值为:

    • modn:以p为模的整数环(仅适用于素数字段)。
    • givaro:仅适用于最多65521个元素的字段)。
    • ntl:-使用GF2X的NTL(仅在特征2中)。
    • pari or pari_ffelt:PARI的“ FFELT”类型(仅适用于 扩展字段)。
  • elem_cache: 默认值:order <500)缓存所有元素以避免创建时间;除非“ impl =‘givaro’”被忽略

  • repr: (默认:“‘poly’”)被忽略,除非“ impl =‘givaro’”;控制元素向用户打印的方式:

    • log: repr为“ log_repr()
    • int: repr是“ int_repr()
    • poly: repr是“ poly_repr()
  • check_irreducible:验证多项式模数是不可约的

  • proof:如果为“ True”,则使用可证明素性检验否则只能使用伪素数检验。

3. EllipticCurve()

  • 该函数的作用是构造一条椭圆曲线。

在Sage中,椭圆曲线始终由一个较长的Weierstrass方程(的系数)指定

  y ^ 2 + a_1 xy + a_3 y = x ^ 3 + a_2 x ^ 2 + a_4 x + a_6。

输入:

有几种方法可以构建椭圆曲线:

  • “ EllipticCurve([a1,a2,a3,a4,a6])”:具有给定a不变量的椭圆曲线。不变量被强制为一个公共父代。如果都是整数,则将它们强制转换为有理数。

  • “ EllipticCurve([a4,a6])”:与上述相同,但a_1 = a_2 = a_3 = 0。

  • “ EllipticCurve(label)”:使用给定的标签从Cremona数据库返回QQ上的椭圆曲线。标签是字符串,例如““ 11a”“或”“ 37b2”“。标签中的字母*必须为小写(Cremona的新标签)。

  • “ EllipticCurve(R,[a1,a2,a3,a4,a6])”:使用给定的a不变量在R上创建椭圆曲线。尽管大多数功能仅在字段上实现,但此处R可以是任意交换环。

  • “ EllipticCurve(j = j0)”或“ EllipticCurve_from_j(j0)”:返回一个j不变为“ j0”的椭圆曲线。

  • “ EllipticCurve(polynomial)”:从多项式系数中读取a不变式,请参阅“ EllipticCurve_from_Weierstrass_polynomial()”。

  • “ EllipticCurve(cubic,point)”:由平面三次方(三个变量的齐次多项式)定义的椭圆曲线,带有有理点。除了给出长度为2或5的* list 列表之外,还可以给出系数给一个元组*。

你可能感兴趣的:(SageMath)