1 | initial version |
I finally found the time to think about the matter and look for a solution. Let us say I'm interested in an element $z$ in the integer ring of a number field $\mathbb K$; then if that field is Galois and I have an approximation of all complex embeddings of $z$, I can get a hold of the precise element by multiplying my approximations as a vector-column by the Minkowski embedding of the field to the left. Just take the nearest integer in each component and this gives an expression of the exact element which corresponds to the approximations.
An example is worth thousands words:
K.<a>=NumberField(x**2-2)
K.Minkowski_embedding()**(-1)*matrix(2,1,[477.6,0.1]) # this gives almost the element
(239-169*a).complex_embeddings() # check that it's looking good
2 | Explained the example better |
I finally found the time to think about the matter and look for a solution. Let us say I'm interested in an element $z$ in the integer ring of a number field $\mathbb K$; then if that field is Galois and I have an approximation of all complex embeddings of $z$, I can get a hold of the precise element by multiplying my approximations as a vector-column by the Minkowski embedding of the field to the left. Just take the nearest integer in each component and this gives an expression of the exact element which corresponds to the approximations.
An example is worth thousands words:
K.<a>=NumberField(x**2-2)
K.Minkowski_embedding()**(-1)*matrix(2,1,[477.6,0.1]) # this gives almost the element
(239-169*a).complex_embeddings() # check that it's looking good
(Added later) I must add that this example shows that a single embedding/approximation won't be enough : as you see the approximation $0.1$ could be an approximation of zero or of $239-169\sqrt2$, and there's no way to tell which.