Используйте мудрец для вычисления коэффициента кольца - PullRequest
1 голос
/ 05 ноября 2019

Пусть ? = ℚ (√2) и ? = ? (?), где ? ^ 2 + ? + 1 = 0 - один из кубических корней единицы. Пусть a примитивный элемент из L, O_K кольцо алгебраических целых чисел. Как мне тогда вычислить такие коэффициенты, как O_K / Z [a]? Я попытался:

K.<sqrt2> = NumberField(x^2-2)
L.<w> = K.extension(x^2+x+1)
a = L.primitive_element()
print L.ring_of_integers().quotient(ZZ[a])

Однако я всегда получаю такие ошибки, как: "невозможно преобразовать относительный порядок в числовом поле в w0 с определением многочлена x ^ 2 + (2 * sqrt2 + 1) * x + sqrt2 + 3над его базовым полем в поле чисел в w с определением полинома x ^ 2 + x + 1 над его базовым полем ".

Какой здесь правильный синтаксис?

1 Ответ

1 голос
/ 08 ноября 2019

Как вы заметили, проблема в том, что у нас есть w и w0, и они, похоже, не согласны. На этой ссылке на документацию у нас есть интересный пример.

sage: K.<a> = NumberField(x^3 - 2)
sage: ZZ[a]
Order in Number Field in a0 with defining polynomial x^3 - 2 with a0 = a

Это заставляет меня попробовать

sage: K.<a> = NumberField(x^3 - 2)
sage: Za = ZZ[a]
sage: OK = K.maximal_order()
sage: Za.is_suborder(OK)
False
sage: OK.is_suborder(Za)
False
sage: OK
Maximal Order in Number Field in a with defining polynomial x^3 - 2
sage: Za
Order in Number Field in a0 with defining polynomial x^3 - 2 with a0 = a
sage: OK.number_field()
Number Field in a with defining polynomial x^3 - 2
sage: Za.number_field()
Number Field in a0 with defining polynomial x^3 - 2 with a0 = a
sage: OK.number_field() == Za.number_field()
False

И, как мы можем видеть, даже если a0=a по-видимому, нет способа напрямую сравнить даже базовые числовые поля. Я совсем не эксперт в этой части кода, но я думаю, что он заслуживает билета для разъяснения по крайней мере. Я открыл Trac 28706 .


А пока, если вы сможете найти способ получить желаемый ордер, используя обычный синтаксис для ордеров, я сделаю это,Для примера, который я сделал из документации, я думаю, что Za и OK одинаковы, но для вашего я попробовал это.

sage: Za.gens()
(1, w0, (-2*sqrt2 - 1)*w0 - sqrt2 - 3, (3*sqrt2 + 6)*w0 + 7*sqrt2 + 7)
sage: O1 = L.order([1,w,(-2*sqrt2 - 1)*w - sqrt2 - 3, (3*sqrt2 + 6)*w + 7*sqrt2 + 7])
sage: O1.is_suborder(OK)
True

, что, безусловно, является улучшением. Увы,

sage: OK.quotient(O1)
TypeError: unable to convert Maximal Relative Order in Number Field in w with defining polynomial x^2 + x + 1 over its base field to Number Field in w with defining polynomial x^2 + x + 1 over its base field

так что теперь я вне моей глубины. Разрешены ли такие коэффициенты как таковые? Возможно, вам придется создать идеально вместо этого, чтобы выполнить это действие. Удачи!

...