On 11/13/2010 4:59 PM, Richard Hennessy wrote:
> Well, as many Maxima commands as possible should respect a common sign
> convention for
> sqrt(). Some may not work that way for a legitimate reason.
>
You are assuming there is such a thing as a "common sign convention"
that solves the problem of simplification of algebraic expressions.
radcan does not change the sign of an expression. It chooses an
interpretation
for radical expressions in a manner that is consistent within that
expression.
It does not refer to assumptions, though it appears that other programs use
assumptions either on the argument to radcan, which is simplified
before calling
radcan, or on the output from radcan, which is simplified before display.
radcan itself never produces abs().
You (and others) seem to think that sqrt( (x^2-2*x+1)/x) is equal to
sqrt(1/x)*abs(x-1).
It is not.
(defun h(x) (* (sqrt(/ 1.0 x))(abs (1- x))))
(defun g(x) (sqrt (/ (+ (* x x)(* -2 x) 1) x)))
evaluate at i = (complex 0 1.0)
(h i) is 1 - i
(g i) is 0-1.414 i
Does this matter? I think so.
Can you solve anything by (assume x>0) or some such thing?
It works only for trivial cases. You are not solving the problem;
merely papering over some demo cases.
Unfortunately.
this is not a new problem, it was being considered at least between
(say) 1963 and now.
People have been writing papers on some variant of this topic (e.g.
denesting radicals) for decades. So maybe it is not so easy.
>
>