On Fri, Mar 7, 2025 at 7:30 AM Waldek Hebisch <de...@fricas.org> wrote: > > On Fri, Mar 07, 2025 at 01:39:53PM +0100, 'Ralf Hemmecke' via FriCAS - > computer algebra system wrote: > > I have given x: AlgebraicNumber and know already that the value is real. > > But how do you "know" this? We discussed several times the problem: > algebraically conjugates of an algebraic number are indistinguishable.
One way to "know" a real algebraic number t without knowing the interval with rational endpoints is to know its Thom encoding, that is, the signs of the derivatives of the minimal polynomial of t at t. This determines t uniquely. Thom encoding is very convenient in algorithmic settings, as it can be parametrised. Dima > > So your "know" may mean on of several things: > > - you look for real conjugate > - you know that all conjugates are real > - there is exactly one real conjugate > - you have some rules that choose real conjugate > > As an example consider > > p6 := legendre(6)$PolynomialNumberTheoryFunctions > a := rootOf(p6) > > Which of the real roots of p6 do you want (all conjugates are real)? > > Similarly > > b := sqrt(a) > > Do you "know" that b is real (6 conjugates are imaginary, 6 are > real). > > Or consider > > c := rootOf(x^3 - x + 4) > > Do you "know" that c is real (there is exactly one real root). > > > > 1) Is there a function that given x and an eps:Fraction(Integer) returns > > two rational bounds l,u such that l<=x<=u and u-l<eps without going > > via Float? > > > > 2) Is there an a function to convert x to > > RealClosure(Fraction(Integer))? > > > > I am actually interested only in (1), but while looking for it, I came > > across RealClosure und found that quite interesting and maybe the function > > approximate [1] is close to what I want. > > Answer really depends on what you mean by "know". And the most > efficient way to get resulut is likely to use floating point > approximations. For example, if you are statisfied with "random" > real conjugate one way to go is to find minimal polynomial, then > use Sturm sequences or rule of signs and bisection to find bounds > on a real root. Using some numeric root finding method is likely > to be more efficient (but mostly symbolic approach may be easier > to program). > > Currently it seems that we do not have a function to compute > minimal polynomial. For kernels this could be done based on > definingPolynomial, in general we would need some extra linear > algebra. > > Actually, if you want easy coding simplest way could go via setting > a _system_ of equations for your number and using 'solve'. > > All this in general will give you a list of values (possible > solutions) and you will need to use your "know" to decide > which one you want. > > -- > Waldek Hebisch > > -- > You received this message because you are subscribed to the Google Groups > "FriCAS - computer algebra system" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to fricas-devel+unsubscr...@googlegroups.com. > To view this discussion visit > https://groups.google.com/d/msgid/fricas-devel/Z8r03PddOvZG8-iF%40fricas.org. -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to fricas-devel+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/fricas-devel/CAAWYfq02BdWwvyiwq9RriH1FUiLg28fGXaaH5ZWJsEYt%3D7RVOA%40mail.gmail.com.