The notation x = ZZ['x'].gen() (etc) looks really weird to beginners. So it is worth pointing out that x=polygen(ZZ), x=polygen(RR) etc do the same and are less obfuscatory.
John 2009/9/26 Robert Bradshaw <rober...@math.washington.edu>: > > On Sep 23, 2009, at 6:11 PM, rjf wrote: > >> If you want to look at possible definitions of solve that have been >> refined more recently than Maxima's solve, you can look at >> Mathematica's >> Solve, NSolve, RSolve, Reduce, and maybe some others like Eliminate. >> >> Maxima's solve dates to 1971, but there is also linsolve, algsys, >> realroots, and some other programs that you can probably find in the >> documentation ... roots, newton... and there may also be numerical >> rootfinders in the Fortran library. The decision as to whether >> to_poly_solve does the job for you (apparently not, at least at the >> moment) or not, is only one aspect. >> >> I am pleased that you consider, at least as an option, augmenting >> Maxima by loading in programs into Maxima written in the Maxima >> language (to_poly_solve). Maybe someone would define what you want >> Sage's "solve" to do in all cases, and feed the disambiguation >> information to a short Maxima program that then calls solve, >> to_poly_solve, roots, etc etc as >> necessary. You might even find that your short program would be >> useful to people directly using Maxima. >> >> There is, in my experience, a gap between people who think that all >> roots of a polynomial can be found [by complex rootfinders] and those >> people who want exact algebraic expressions. Or those who want >> rational isolating intervals for each real root, computed by Sturm >> sequences. >> >> And then there are the people who need to represent infinite sets like >> the roots of sin(x)=0. >> >> The gap between these groups is kind of cognitive. Like "what do you >> mean you can't find the roots of a quintic because it is unsolvable?? >> It has 5 roots!" > > Yep, we support various root numerical root finders, linear solvers, > grobner bases, and symbolic solvers (via Maxima--you're right, we > should look into exposing and using the various package here). The > non-symbolic ones are typically orders of magnitude faster, if you're > in that special case. This is one area where the idea of a domain > like Sage has is useful. > > sage: x = ZZ['x'].gen() > sage: f = x^6 - 2*x^5 - x^2 + x + 2 > > sage: f.roots(QQ) > [(2, 1)] > > sage: f.roots(QQbar) # these are exact > [(1.167303978261419?, 1), (2, 1), (-0.7648844336005847? - > 0.3524715460317263?*I, 1), (-0.7648844336005847? + 0.3524715460317263? > *I, 1), (0.1812324444698754? - 1.083954101317711?*I, 1), > (0.1812324444698754? + 1.083954101317711?*I, 1)] > > sage: f.roots(RR) > [(1.16730397826142, 1), (2.00000000000000, 1)] > > sage: f.roots(RealField(500)) > [(1.16730397826141868425604589985484218072056037152548903914008244927565 > 190342952705318068520504972867289535916899524104793645129596750871791336 > 957872256, 1), > > (2.000000000000000000000000000000000000000000000000000000000000000000000 > 000000000000000000000000000000000000000000000000000000000000000000000000 > 00000000, 1)] > > sage: f.roots(CDF) > [(1.16730397826, 1), (2.0, 1), (-0.764884433601 - 0.352471546032*I, > 1), (-0.764884433601 + 0.352471546032*I, 1), (0.18123244447 - > 1.08395410132*I, 1), (0.18123244447 + 1.08395410132*I, 1)] > > sage: f.roots(GF(17)) > [(8, 1), (6, 1), (2, 1)] > > sage: sage: f.roots(Qp(17, 5)) > [(8 + 17 + 2*17^2 + 17^3 + 11*17^4 + O(17^5), 1), > (6 + 17 + 8*17^2 + 14*17^3 + 7*17^4 + O(17^5), 1), > (2 + O(17^5), 1)] > > > Alternatively, > > sage: x = RR['x'].gen() > sage: f = x^6 - 2*x^5 - x^2 + x + 2 > sage: parent(f) > Univariate Polynomial Ring in x over Real Field with 53 bits of > precision > sage: f.roots() > [(1.16730397826142, 1), (2.00000000000000, 1)] > > etc. > > - Robert > > > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---