1 | initial version |
I think this is because (-1)^(1/3)
is not considered to be real.
sage: solve(x^3+1==0,x)
[x == 1/2*I*(-1)^(1/3)*sqrt(3) - 1/2*(-1)^(1/3), x == -1/2*I*(-1)^(1/3)*sqrt(3) - 1/2*(-1)^(1/3), x == (-1)^(1/3)]
sage: assume(x,'real')
sage: solve(x^3+1==0,x)
[]
Note that Maxima (which does our solving) doesn't actually care about x
being real, since it's a dummy variable.
(%i1) declare(x,real);
(%o1) done
(%i2) solve(x^3+1=0,x);
sqrt(3) %i - 1 sqrt(3) %i + 1
(%o2) [x = - --------------, x = --------------, x = - 1]
2 2
But when it's returned to Sage, somehow it doesn't keeps the x=-1
syntax and gets the cube root again, and it falls prey to
sage: (-1)^(1/3).n()
0.500000000000000 + 0.866025403784439*I