On 10/02/2013 09:06 AM, Robert Dodier wrote:
> On 2013-10-01, John Lapeyre <lapeyre.math122a at gmail.com> wrote:
>
> > I see three possible interpretations of this example
> > (are there more ?) :
> >
> > 1. (-1)^(1/6) means one particular root of z^6=-1
> > (e.g. the principal root). solve gave the
> > correct answer. But perhaps solve should have
> > applied rectform itself.
> >
> > 2. the meaning of (-1)^(1/6) depends on the context.
> > eg if it appears at the top-level of expressions
> > in a list of three elements, then it means
> > the same root in each case, maybe a specific
> > root. This is obviously problematic.
> >
> > 3. (-1)^(1/6) means any one of the the six roots,
> > or maybe all of them. It's up to the user to
> > decide. In this case, solve gave an incorrect answer
> > and this is a bug in solve.
>
> I think it's a bug in solve that the result is ambiguous.
> If we can't even solve a simple equation unambiguously, who knows what
> will happen in complicated problems.
Mathematica seems take (-1)^(1/3) to mean the principal root. (I
don't know if it is consistent in this.) It gives the solutions of
%i=z^3 as -%i, (-1)^(1/6), (-1)^(5/6). This is agrees with maxima,
if maxima also considers (-1)^(1/6) to be a fixed root.
A nice feature of ComplexExpand is that it allows a
list of variables that will be considered complex to
be passed.
I guess this would not be too hard to implement in
rectform. rectform already respects declare(z,complex),
which is good. But allowing list to be passed as well might
avoid the whole scope issue.
--John