Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
1

Number field basis containing 1

asked 7 years ago

eodorney gravatar image

In Sage, the default basis for a maximal order OK often does not contain the element 1:

sage: QuadraticField(-3).ring_of_integers().basis()
[1/2*a + 1/2, a]

However, 1 is always a primitive lattice vector in OK. Is there an elegant way to produce a basis containing 1?

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
1

answered 7 years ago

eodorney gravatar image

Found the answer! Basically the method is to reverse the coordinates on OK and re-echelonize the basis.

def basis_with_1(L):
  assert L.is_field();
  n = L.degree();
  R = matrix([[1 if i+j==n+1 else 0 for j in [1..n]] for i in [1..n]]);
  A = L.maximal_order().module().matrix();
  A = A*R;
  M = (ZZ^n).span_of_basis([vector(v) for v in A])
  A = matrix(M.echelonized_basis());
  A = R*A*R;
  return [L(v) for v in A]; 

sage: L = QuadraticField(-3)
sage: basis_with_1(L)
[1, 1/2*a + 1/2]
Preview: (hide)
link

Comments

Congratulations; you can accept your own answer to mark your question as solved.

slelievre gravatar imageslelievre ( 7 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 7 years ago

Seen: 790 times

Last updated: Apr 25 '18