Max Alekseyev on Tue, 24 Sep 2013 19:45:56 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: rational roots |
Another approach would be to convert obtained floating point roots in rational numbers as follows: ? polroots(x^2-0.25) %1 = [-0.50000000000000000000000000000000000000 + 0.E-38*I, 0.50000000000000000000000000000000000000 + 0.E-38*I]~ ? apply(t->algdep(t,1),%) %2 = [2*x + 1, 2*x - 1]~ Regards, Max On Tue, Sep 24, 2013 at 1:41 PM, Andreas Enge <andreas.enge@inria.fr> wrote: > On Tue, Sep 24, 2013 at 10:20:17AM -0700, somayeh didari wrote: >> I need to find rational roots of a polynomial in Pari/gp. But when I use polroots command, Pari gives all complex roots. On the other hand rational points are returned in complex type, too. How can i find rational roots in rational type? for example >> >> ? polroots(x^2-0.25) >> %14 = [-0.5000000000000000000000000000 + 0.E-28*I, 0.500000000000000000000000000 >> 0 + 0.E-28*I]~ >> >> But I need [-0.5, 0.5]!!!!!!!!! > > Try factor, and prefer to specify the coefficient as a rational if you look > for rational roots: > > ? factor (x^2-1/4) > %1 = > [2*x - 1 1] > > [2*x + 1 1] > > > ? factor (x^2-0.25) > %2 = > [x + 0.50000000000000000000000000000000000000 1] > > [x - 0.50000000000000000000000000000000000000 1] > > seems to work and look for real roots. Otherwise, you still have the option > to round rounding errors away: > > ? real (polroots (x^2-0.25)) > %3 = [-0.50000000000000000000000000000000000000, 0.50000000000000000000000000000000000000] > > Andreas > >