Problem with IS and EQUAL in evaluating equality of expressions
- Subject: Problem with IS and EQUAL in evaluating equality of expressions
- From: van Nek
- Date: Sat, 13 May 2006 19:03:43 +0200
--Alt-Boundary-13535.27004125
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body
Am 13 May 2006 um 13:23 hat Henry Lenzi geschrieben:
> Dear All --
>
> I tried using this "is" operator today, and I failed miserably:
>
> (%i27) is(equal ((x + 1)^2, x^2 + 2*x + 1));
> (%o27) true
>
> But...
>
> (%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))
> -- an error. Quitting. To debug this try debugmode(true);
> (%i29)
>
> I don't grok the debugger, so I've got no usefull output.
>
> (%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
>
> Is it me or is Maxima?
...
>
> Completely bewildered, gratefull in advance for any help,
> regs,
>
> Henry Lenzi
Hallo Henry,
(%i1) is( 1=1.0 );
(%o1) false
(%i2) is( 1+1=2 );
(%o2) true
is with "=" compares literally after simplification
(%i3) is( equal( (x+y)^2, x^2+2*x*y+y**2 ) );
(%o3) true
(%i4) map('ratsimp, [(x + 1)^2, x^2 + 2*x + 1] );
2 2
(%o4) [x + 2 x + 1, x + 2 x + 1]
is with equal uses ratsimp for simplification
this doesn't work for trigonometric functions
in your examples you can use trigreduce for simplification
(%i5) map('trigreduce,[ sin(a+b), sin(a)*cos(b)+cos(a)*sin(b) ] );
(%o5) [sin(b + a), sin(b + a)]
(%i6) map('trigreduce,[ cos(t)**2,(1+cos(2*t))/2 ] );
cos(2 t) + 1 cos(2 t) + 1
(%o6) [------------, ------------]
2 2
then you can compare
(%i7) is( apply('equal,%) );
(%o7) true
HTH
Volker
--Alt-Boundary-13535.27004125
Content-type: text/html; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<title></title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<meta http-equiv="Content-Style-Type" content="text/css"/>
</head>
<body>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">Am 13 May 2006 um 13:23 hat Henry Lenzi geschrieben:</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> Dear All --</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">>  I tried using this "is" operator today, and I failed miserably:</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> (%i27) is(equal ((x + 1)^2, x^2 + 2*x + 1));</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> (%o27)                               true</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">>  But...</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> (%i28) is(equal(sin(a+b),sin(a)*cos(b)+cos(a)*sin(b)));</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> Maxima was unable to evaluate the predicate:</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> equal(sin(b + a), cos(a) sin(b) + sin(a) cos(b))</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">>  -- an error.  Quitting.  To debug this try debugmode(true);</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> (%i29)</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">>  I don't grok the debugger, so I've got no usefull output.</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> (%i18) is((cos(t))**2=(1+cos(2*t))/2);</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> (%o18)                               false</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> (%i19) is(sin(a+b)=sin(a)*cos(b)+cos(a)*sin(b));</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> (%o19)                               false</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">>  Is it me or is Maxima?</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">...</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">>   Completely bewildered, gratefull in advance for any help,</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">>   regs,</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt">>    Henry Lenzi</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">Hallo Henry,</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%i1) is( 1=1.0 );</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%o1)                                           
false</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%i2) is( 1+1=2 );</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%o2)                                           
true</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">is with "=" compares literally after simplification</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%i3) is( equal( (x+y)^2, x^2+2*x*y+y**2 ) );</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%o3)                                           
true</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%i4) map('ratsimp, [(x + 1)^2, x^2 + 2*x + 1] );</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">                                       2                   
2</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%o4)                            [x  + 2 x + 1, x  + 2 x + 1]</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">is with equal uses ratsimp for simplification</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">this doesn't work for trigonometric functions</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">in your examples you can use trigreduce for simplification</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%i5) map('trigreduce,[ sin(a+b), sin(a)*cos(b)+cos(a)*sin(b) ] );</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%o5)                              [sin(b + a), sin(b + a)]</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%i6) map('trigreduce,[ cos(t)**2,(1+cos(2*t))/2 ] );</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">                                      cos(2 t) + 1  cos(2 t) + 1</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%o6)                            [------------, ------------]</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">                                           2       
2</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">then you can compare</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%i7) is( apply('equal,%) );</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">(%o7)                                           
true</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">HTH</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt">Volker</span></font></div>
<div align="left"><font face="Arial" color="#7f0000" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"><font face="Arial" size="2"><span style="font-size:10pt"><br />
</span></font></div>
<div align="left"></div>
</body>
</html>
--Alt-Boundary-13535.27004125--