> > [...,..,x == (-1)^(1/3)*3^(1/3)]
> >
> >
> > I ran into this issue while demonstrating the usefulness of the solve
> > function in front of a class of students.  That was quite 'fun' :-)
> >
> > Ted
> >
> It does seem strange that the answer that looked like it should be real is
> actually not.  If you have sage evaluate the first value in the returned
> answers you see that despite its appearance it is the pure real number that
> you desire.
> 
> b[0].right().n()
> 
> you get
> 
> -1.44224957030741
> 
> So make sure that your students see that sage *did* return the desired
> value.  But also remind them to be careful because all other things
> being equal technology tends to answer your questions in the way that
> makes the most sense to its programmer, which does not necessarily
> make the most sense to a student (or anyone else).

right, as Jacob pointed it out, one has to be careful about values that look
real (resp. complex) and are not. In fact this is a very nice example to show
students that they should take care about the appearance of symbolic objects
(and the difference between classes where you have a canonical form like
integers, and other classes where no canonical form exists, more precisely
the problem is undecidable):

You can construct other nice examples: take the equation (x-1)*(x^2+1)=0,
with trivial root 1:

sage: expand((x-1)*(x^2+1))
x^3 - x^2 + x - 1

Then replace the constant term by a symbolic value a, and solve for the
degree 3 equation:

sage: var('a'); sol = solve(x^3 - x^2 + x - a==0, x); sol
a
[x == (-sqrt(3)*I/2 - 1/2)*(sqrt(27*a^2 - 14*a + 3)/(6*sqrt(3)) + (27*a - 
7)/54)^(1/3) - 2*(sqrt(3)*I/2 - 1/2)/(9*(sqrt(27*a^2 - 14*a + 3)/(6*sqrt(3)) + 
(27*a - 7)/54)^(1/3)) + 1/3, x == (sqrt(3)*I/2 - 1/2)*(sqrt(27*a^2 - 14*a + 
3)/(6*sqrt(3)) + (27*a - 7)/54)^(1/3) - 2*(-sqrt(3)*I/2 - 1/2)/(9*(sqrt(27*a^2 
- 14*a + 3)/(6*sqrt(3)) + (27*a - 7)/54)^(1/3)) + 1/3, x == (sqrt(27*a^2 - 14*a 
+ 3)/(6*sqrt(3)) + (27*a - 7)/54)^(1/3) - 2/(9*(sqrt(27*a^2 - 14*a + 
3)/(6*sqrt(3)) + (27*a - 7)/54)^(1/3)) + 1/3]

You know one of the roots should evaluate to 1 for a=1, in fact it is sol[2]:

sage: sol[2].subs(a=1).right().n()
1.00000000000000

Thus you have constructed a nice expression for 1:

sage: sol[2].subs(a=1).right()    
(2/(3*sqrt(3)) + 10/27)^(1/3) - 2/(9*(2/(3*sqrt(3)) + 10/27)^(1/3)) + 1/3

Quiz: how to simplify that expression to 1 within SAGE? I've tried simplify,
and radical_simplify, but neither succeeds...

Paul Zimmermann

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to