On my last post, I guess the real question for me is
why did realroots report rational roots if the roots are only accurate
to a certain amount?
Is there a predicate which would allow showing rational roots only if
they really are rational?
TIA,
-sen
On Fri, 25 Aug 2006, sen1 at math.msu.edu wrote:
> Hello,
>
> All of this is with maxima 5.9.3.
>
> Following the discussion about eigenvalues of cubic polynomials, I
> started experimenting with the characteristic polynomial of the
> matrix
>
> A: matrix([0,3,2],[3,0,1],[2,1,0]);
>
> The polynomial is p(z) = -z^3 + 14*z + 12
>
> As one might expect, its roots obtained by solve are somewhat of a
> mess.
>
> However, realroots produces 3 rational roots.
>
> (%i37) p(z):= -z^3 + 14*z + 12;
> 3
> (%o37) p(z) := - z + 14 z + 12
> (%i38) realroots(p(z));
> 107438331 30574087 138012419
> (%o38) [z = - ---------, z = - --------, z = ---------]
> 33554432 33554432 33554432
>
> The denominator is 2^25.
>
> That doesn't seem too large for CAS (or am I simply wrong here).
>
> Call the roots $z_1, z_2, z_3$.
>
> But,
>
> %i41) p(part(%o38,1,2));
> 366670081845891
> (%o41) -----------------------
> 37778931862957161709568
> (%i42) float(%);
> (%o42) 9.705676252996893E-9
>
> So, trying to verify that the rational $z_1$ was a root is only
> accurate to about 10^(-8).
>
> Is this kind of thing to be expected?
>
> I was surprised that "realroots" produced rational solutions in the
> first place, but, given that, I thought I'd be in the realm of
> rational arithmetic.
>
> In double precision floating point arithmetic, I know one expects
> accuracy to something like 16 decimal places.
>
> What is number of digits to reasonably expect in rational arithmetic?
>
> Is there a setting like fpprec for rational arithmetic?
>
> -sen
>
>
>
--
---------------------------------------------------------------------------
| Sheldon E. Newhouse | e-mail: sen1 at math.msu.edu |
| Mathematics Department | |
| Michigan State University | telephone: 517-355-9684 |
| E. Lansing, MI 48824-1027 USA | FAX: 517-432-1562 |
---------------------------------------------------------------------------