Integrate?
- To: mathgroup at yoda.ncsa.uiuc.edu
- Subject: Integrate?
- From: Jeffrey P. Golden <jpg at ALLEGHENY.SCRC.Symbolics.COM>
- Date: Sat, 3 Nov 90 20:55 EST
Since one of you brought MACSYMA into this, I guess I'll respond:
Date: Fri, 2 Nov 90 18:21:48 +0100
From: Harald Hanche-Olsen <hanche at imf.unit.no>
Robert Staerk <staerk at iam.unibe.ch> writes ...
Mathematica gives a wrong answer to the following integral:
2 Pi
/
| 1/2
| (2 - 2 cos(x)) dx
|
/
0
Is this a known bug?
In[1]:= Integrate[ Sqrt[2 - 2 Cos[x]], {x, 0, 2 Pi}]
Out[1]= 0
MAPLE V
> int( sqrt(2 - 2 * cos(x)), x=0...2*Pi );
8
As I'll try to demonstrate below, I don't think this is such an easy
problem. So, I wonder how Maple did it?
This is apparently caused by Mathematicas attempts at being clever
about things like complex square roots, branch cuts and the like.
I don't believe this theory. As I show below, it is quite possible to
get the answer of 0 by simply not being clever! I don't actually know
how Mathematica gets its answer of 0, a WRI person would have to tell
us that. But I do know how MACSYMA gets its answer of 0. Mathematica
might be losing here in the same way.
Yes, it is known. And some people think Mathematica is brain-dead
because of it. Myself, I haven't decided yet. I keep alternating
between Mathematica and Maple, just like you seem to do...
All CAS unfortunately get some integrals wrong. I only fixed MACSYMA
a few months ago to get e.g. integrate(sqrt(x+1/x-2),x,0,1); -> 4/3,
instead of -4/3 . How does MAPLE V do on that one?
------------------------------------------------
Date: Thu, 1 Nov 90 13:52:13 -0500
From: Jack <jack at brahms.udel.edu>
Macsyma also gives the same incorrect result 0 for this integral
(version 416.48 for Sparc Computers). That really surprised me.
Here's how MACSYMA gets 0:
(c1) /* The following gives the wrong answer: */
integrate(sqrt(2-2*cos(x)),x,0,2*%pi);
(d1) 0
(c2) /* Here's the reason why: */
/* Just look at the indefinite integral and then
take limits: */
integral: integrate(sqrt(2-2*cos(x)),x);
4
(d2) - -----------------------
2
sin (x)
sqrt(------------- + 1)
2
(cos(x) + 1)
(c3) upper_limit: limit(integral,x,2*%pi,minus);
(d3) - 4
(c4) lower_limit: limit(integral,x,0,plus);
(d4) - 4
(c5) upper_limit - lower_limit;
(d5) 0
(c6) /* Two ways to get the correct answer: */
/* The first works in any MACSYMA (I think),
the latter only in the development version: */
2*integrate(sqrt(2-2*cos(x)),x,0,%pi);
(d6) 8
(c7) integrate(sqrt(2-2*cos(x)),x,-%pi,%pi);
(d7) 8
The above is not meant to offer any excuses for giving an
incorrect result. A wrong answer is bad news. C7/D7 shows
that we've done something, but not enough. There are many
ways to get the correct answer here: split the integration
interval (and do all the consequent integrals correctly!),
do a smart change of variables, use the halfangle formula,
etc. But not all of these approaches are necessarily
appropriate for a computer algebra system. Nevertheless,
these approaches indicate to me, time allowing, that we can
fix this bug in MACSYMA. I'm not promising when.
Again, bugs are bad news. But unfortunately all CAS have
them. We try to do the best here we can. (I have been
planning a MACSYMA Newsletter article on this problem and
related problems. We need to tell our users what they
unfortunately must watch out for.)
Anyway, this is a Mathematica Group list, so I apologize
for going on so long.
From: Jeffrey P. Golden <jpg at ALLEGHENY.SCRC.Symbolics.COM>
Organization: Symbolics MACSYMA Division