数字字段

分支

在Sage中,如何计算具有给定判别式和分支的数域?

SAGE可以访问有界分支且阶数小于或等于6的Jones数字字段数据库。它必须单独安装 (database_jones_numfield )。

首先加载数据库:

sage: J = JonesDatabase()            # optional - database
sage: J                              # optional - database
John Jones's table of number fields with bounded ramification and degree <= 6

列出数据库中分支最多为2的所有字段的度数和判别式:

sage: [(k.degree(), k.disc()) for k in J.unramified_outside([2])] # optional - database
[(4, -2048), (2, 8), (4, -1024), (1, 1), (4, 256), (2, -4), (4, 2048), (4, 512), (4, 2048), (2, -8), (4, 2048)]

列出2以外的次数正好为2的域的判别式:

sage: [k.disc() for k in J.unramified_outside([2],2)] # optional - database
[8, -4, -8]

列出数据库中三次域在3和5处精确分支的判别式:

sage: [k.disc() for k in J.ramified_at([3,5],3)] # optional - database
[-6075, -6075, -675, -135]
sage: factor(6075)
3^5 * 5^2
sage: factor(675)
3^3 * 5^2
sage: factor(135)
3^3 * 5

列出数据库中以101为分支的所有字段:

sage: J.ramified_at(101)                     # optional - database
[Number Field in a with defining polynomial x^2 - 101,
 Number Field in a with defining polynomial x^4 - x^3 + 13*x^2 - 19*x + 361,
 Number Field in a with defining polynomial x^5 - x^4 - 40*x^3 - 93*x^2 - 21*x + 17,
 Number Field in a with defining polynomial x^5 + x^4 - 6*x^3 - x^2 + 18*x + 4,
 Number Field in a with defining polynomial x^5 + 2*x^4 + 7*x^3 + 4*x^2 + 11*x - 6]

班级编号

如何计算Sage中数字字段的类号?

这个 class_number 是与QuadaticField对象关联的方法:

sage: K = QuadraticField(29, 'x')
sage: K.class_number()
1
sage: K = QuadraticField(65, 'x')
sage: K.class_number()
2
sage: K = QuadraticField(-11, 'x')
sage: K.class_number()
1
sage: K = QuadraticField(-15, 'x')
sage: K.class_number()
2
sage: K.class_group()
Class group of order 2 with structure C2 of Number Field in x with defining polynomial x^2 + 15 with x = 3.872983346207417?*I
sage: K = QuadraticField(401, 'x')
sage: K.class_group()
Class group of order 5 with structure C5 of Number Field in x with defining polynomial x^2 - 401 with x = 20.02498439450079?
sage: K.class_number()
5
sage: K.discriminant()
401
sage: K = QuadraticField(-479, 'x')
sage: K.class_group()
Class group of order 25 with structure C25 of Number Field in x with defining polynomial x^2 + 479 with x = 21.88606862823929?*I
sage: K.class_number()
25
sage: K.pari_polynomial()
x^2 + 479
sage: K.degree()
2

下面是一个涉及更一般类型的数字字段的示例:

sage: x = PolynomialRing(QQ, 'x').gen()
sage: K = NumberField(x^5+10*x+1, 'a')
sage: K
Number Field in a with defining polynomial x^5 + 10*x + 1
sage: K.degree()
5
sage: K.pari_polynomial()
x^5 + 10*x + 1
sage: K.discriminant()
25603125
sage: K.class_group()
Class group of order 1 of Number Field in a with defining
polynomial x^5 + 10*x + 1
sage: K.class_number()
1
  • 有关表格、公式和背景信息,另请参阅数学世界站点上http://mathworld.wolfram.com/ClassNumber.html的班级编号链接。

  • 对于割圆字段,请尝试:

    sage: K = CyclotomicField(19)
    sage: K.class_number()    # long time
    1
    

有关更多详细信息,请参见 ring/number_field.py 文件。

整体基

在Sage中如何计算数域的整基?

SAGE可以计算该数字字段的元素列表,这些元素是数字字段的整环的基础。

sage: x = PolynomialRing(QQ, 'x').gen()
sage: K = NumberField(x^5+10*x+1, 'a')
sage: K.integral_basis()
[1, a, a^2, a^3, a^4]

接下来,我们计算一个立方域的整数环,其中2是“本质判别因子”,因此整数环不是由单个元素生成的。

sage: x = PolynomialRing(QQ, 'x').gen()
sage: K = NumberField(x^3 + x^2 - 2*x + 8, 'a')
sage: K.integral_basis()
[1, 1/2*a^2 + 1/2*a, a^2]