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.

Reply via email to