Subject: solve remembers too much, asks odd questions.
From: Richard Fateman
Date: Sat, 06 Nov 2010 12:26:26 -0700
maxima 5.21.0
solve(z=y^b,y) asks if b is an integer. type the same command again
and it doesn't ask if b is an integer, but assumes the previous result.
Is this intentional, remembering that information? I think it is an error.
if b is not an integer, Maxima asks if z is positive, negative or zero,
which excludes the possibility that z is complex.
Characterizing the solution set is not easy. Mathematica says y=z^(1/b) with
a warning about inverse functions. Mathematica's Reduce[...] instead of
Solve, which is supposed to characterize all solutions, seems not to
terminate.
(Mathematica 7.0)
What, then, is the minimal constraint on y and b such that ...
y = (y^1/b)^b ??
Let's pick a simple example, b=1+i.
define t(y) = y - y^(1/b)^b.
If Maxima (for example) is doing the computation "correctly" can we
expect that t(y)==0 ?
define tt(y):rectform(ev(t(y),numer)) to make the results easier on the
eye.
tt(1.0) is indeed 0.0 hurrah.
but tt(1.1) is not zero. tt(0.9) is not zero. not even close.
tt(1.0+0.001*%i) is not zero.
plot2d(tt(x),[x,0,5]) suggests that tt(x) is almost NEVER zero, for real x.
when IS tt(y) equal to zero??
A solution is discussed here ..
http://www.cs.berkeley.edu/~fateman/papers/y=z2w.pdf
What does this mean?
(a) generalizing from real to complex cannot be done by handwaving,
analogy, guesses
at what the user really wants, or just letting the program run and see
what comes out.
(b) generally, if you want to talk about the range of a function,
you should be talking about the range of the function, not the domain.