Given a real number, I am trying to find a nearby algebraic number. This can be done in Mathematica with the RootApproximant function.
I couldn't find a similar function in Sage, so I am using algdep() to find an irreducible polynomial that is approximately satisfied by that number. Then I am using roots() to find the roots of that polynomial, and I can identify which root is closest to my number.
The problem is that the output of algdep() has a type that seems to be incompatible with roots().
When I execute this code, p.roots() returns an empty list:
p=algdep(sqrt(5), 10);
print(p.roots())
When I execute this code, a list of the roots is returned:
q = x^2 - 5
print(q.roots())
The output of algdep() has type sage.rings.polynomial.polynomial_integer_dense_flint.Polynomial_integer_dense_flint
In the second block of code, q has type sage.symbolic.expression.Expression
Is there a way to convert the first type into the Expression type?