Problem with IS and EQUAL in evaluating equality of expressions
Subject: Problem with IS and EQUAL in evaluating equality of expressions
From: Robert Dodier
Date: Sat, 13 May 2006 11:09:25 -0600
Hello Henry,
Summary:
(1) a = b is more or less equivalent to testing whether a and b
have the same internal structure
(2) equal (a, b) is more or less equivalent to ratsimp (b - a) = 0
(3) is (...) causes predicates to be evaluated
There's more, but I'll let that be enough for now.
> (%i27) is(equal ((x + 1)^2, x^2 + 2*x + 1));
> (%o27) true
Yes, because ratsimp (x^2 + 2*x + 1 - (x + 1)^2); => 0 .
> (%i28) is(equal(sin(a+b),sin(a)*cos(b)+cos(a)*sin(b)));
> Maxima was unable to evaluate the predicate:
> equal(sin(b + a), cos(a) sin(b) + sin(a) cos(b))
Yes, because ratsimp (sin(a)*cos(b)+cos(a)*sin(b) - sin(a+b)); =>
something not 0.
(Note that trigexpand knows the identity needed here --
is(equal(sin(a+b),sin(a)*cos(b)+cos(a)*sin(b))), trigexpand; => true .)
> (%i18) is((cos(t))**2=(1+cos(2*t))/2);
> (%o18) false
> (%i19) is(sin(a+b)=sin(a)*cos(b)+cos(a)*sin(b));
> (%o19) false
Yes, because the right and left side of = have different structures.
> -- Function: equal (<expr_1>, <expr_2>)
> Used with an `is', returns `true' (or `false') if and only if
> <expr_1> and <expr_2> are equal (or not equal) for all possible
> values of their variables (as determined by `ratsimp').
Well, that's not so helpful, isn't it. I'll put it on my to-do list ...
best,
Robert Dodier