Shouldn't is/equal use more powerful techniques? WAS: if x*(y+z)=x*y+x*z then print(true) else print(false); yields false
Subject: Shouldn't is/equal use more powerful techniques? WAS: if x*(y+z)=x*y+x*z then print(true) else print(false); yields false
From: Stavros Macrakis
Date: Fri, 25 Feb 2011 13:45:41 -0500
That said, Maxima doesn't (and can't) guarantee that is( equal( a , b ) )
will always give a complete answer, for example:
is(equal(1-sin(x)^2,cos(x)^2));
=> unknown
It turns out that is/equal is basically using ratsimp and some other
techniques, probably to avoid 'expensive' operations. Nowadays (given how
much faster and larger computers are), it might make sense for it to try
ratsimp(exponentialize(logarc(...))) if ratsimp returns unknown. (Probably
shouldn't use radcan, which may be over-eager in its simplifications.)
-s
On Fri, Feb 25, 2011 at 13:18, Stavros Macrakis <macrakis at alum.mit.edu>wrote:
> The operator "=" in Maxima denotes syntactic equality. Use equal(...) for
> semantic equality:
>
> (%o1) if equal(x*(y+z),x*y+x*z) then print(true) else print(false);
> true
> (%o2) true
> (%i3) is( equal(x*(y+z),x*y+x*z) );
> (%o3) true
>
>
> On Fri, Feb 25, 2011 at 13:14, Paul Breen <greenbreen at yahoo.com> wrote:
>
>> Hello,
>>
>> I'm just getting started with Maxima, so maybe my confusion is a result of
>> my lack of familiarity with the system, but it seems to me that the
>> statement:
>>
>> if x*(y+z)=x*y+x*z then print(true) else print(false);
>>
>> ought to return true. Is Maxima just trying to be extremely general by
>> not assuming that the "+" operator is normal addition, or is this a bug?
>>
>> --Paul Breen
>> _______________________________________________
>> Maxima mailing list
>> Maxima at math.utexas.edu
>> http://www.math.utexas.edu/mailman/listinfo/maxima
>>
>
>