MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: Simple integral wrong

I must make a correction to the last message. The solution Sqrt[Sin[z]^2] is
actually better than Sqrt[Cos[z]^2]*Tan[z] since it gives the correct value
at z=Pi/2 etc. (It was I who got confused and thought it was the other way

Also, I misunderstood your meaning of "simplified" failing to notice that it
was written in quotation marks.


on 00.9.9 11:20 AM, Andrzej Kozlowski at andrzej at wrote:

> on 00.9.9 0:41 AM, Richard Fateman at fateman at EECS.Berkeley.EDU wrote:
>> Andrzej Kozlowski wrote:
>>> on 00.9.8 11:28 AM, Richard Fateman at fateman at wrote:
>>>> The problem pointed out here is that Mathematica gives, for the
>>>> indefinite integral, a form that cannot be used via the fundamental
>>>> theorem of calculus, to compute the definite integral.
>>>> First of all it would be nice if the result were "simplified"
>>>> to Sqrt[Sin[z]^2].
>>> It might be nice but also wrong, since the two answers are only equal in the
>>> first and  third quadrants (for real z) e.g:
>>> In[23]:=
>>> Sqrt[Cos[z]^2]*Tan[z] /. z -> 7*Pi/4
>>> Out[23]=
>>> 1
>>> -(-------)
>>> Sqrt[2]
>>> In[24]:=
>>> Sqrt[Sin[z]^2] /. z -> 7Pi/4
>>> Out[24]=
>>> 1
>>> -------
>>> Sqrt[2]
>> Actually, the non-equivalence of the two expressions as demonstrated by
>> substitution is NOT convincing.
>> As we know, the sqrt(2) has TWO values, +1.41...  and - 1.41...  and
>> Mathematica is choosing the wrong ones sometimes.  If you return, for
>> the square-root, a set of the two values, then the answers are
>> equivalent
>> at any point.   All you've shown above is that Mathematica still doesn't
>> know how to simplify square roots, not that the expressions are
>> different.
> It seems to me that you are just trying to confuse the issue here. You wrote:
>>>> First of all it would be nice if the result were "simplified"
>>>> to Sqrt[Sin[z]^2].
> First of all, it would be a strange program that "simplified"
> Sqrt[Cos[z]^2]*Tan[z] to Sqrt[Sin[z]^2]. And if you meant to say that
> Mathematica should have "chosen"  Sqrt[Sin[z]^2] as its answer rather than
> Sqrt[Cos[z]^2]*Tan[z], than that would be almost as bad  since while
> Sqrt[Cos[z]^2]*Tan[z] gives the wrong answer for certain z, Sqrt[Sin[z]^2] is
> wrong more often.
>>>> Then it would be nice if it were noted that integration through
>>>> points at which Sqrt[0] were computed would result in possible
>>>> problems.
>>>> Rather than saying "I understand how Mathematica might compute this
>>>> wrong
>>>> result" and it is therefore forgivable, I would recommend trying
>>>> to figure out how to conditionalize the result so that illegal
>>>> substitutions can be avoided.
>>> This is basically a question of  interface rather anything to do with "bugs"
>>> etc. I must admit I am also disturbed when Mathematica "innocently" returns
>>> what looks like a mathematically wrong answer. However, in many cases,
>>> including this one, the answer only "looks" wrong. A good case can be made
>>> for the view that
>>> Integrate[Abs[Cos[x]], {x, 0, (Pi)*a}] /. a -> 3/4
>>> is simply not a legitimate way to try to get an answer to the question
>>> posed, particularly that Integrate[Abs[Cos[x]], {x, 0, (Pi)*(3/4)}] returns
>>> the correct answer.
>> If it is not legitimate, then Mathematica should note that, don't you
>> think?
>> Imagine if the computation were in the middle of 8 hours of computing
>> time,
>> and were hidden inside a much larger expression.  It is unreasonable to
>> REQUIRE every human user of Mathematica to check over its answers, don't
>> you think?
> That's what I meant by "a matter of interface".
>>> There is a deeper philosophical issue involved here. In
>>> my first posting I wrote that "there is nothing mathematically wrong" with
>>> the answer returned by Mathematica, but actually a more correct view would
>>> be that everything is wrong with both the answer and the question. The input
>>> Integrate[Abs[Cos[x]], {x, 0, (Pi)*a}] has no mathematical meaning until an
>>> interpretation is assigned to a, and also until it has been agreed what sort
>>> of mathematical (?) object an answer to this sort of question is supposed to
>>> be. 
>> I disagree.  Based on your approach, the answer should be
>> If{some_test[a], answer1[a], answer2[a]], which Mathematica can and
>> should
>> return.
>> Actually, we need to do something about the path as well, since the
>> integrand
>> is not analytic.
> Well, that is actually what I meant. Mathematica is often asked to return an
> answer where there is no unique answer. It sometimes will simply return the
> input unevaluated (as in Sqrt[a^2]), sometimes an "If" statement and sometimes
> just an answer which is only valid under some conditions. That's what I meant
> when I wrote that there is no clear principle about what constitutes a
> "Mathematica answer". On the other hand one may argue that there is a good
> reason for the absence of such a principle. In some areas Mathematica enters
> into territory where there are no known general algorithms that in all cases
> lead to correct solutions. In fact integration is an obvious example of this
> sort of situation, but there are others. One then has the choice between not
> returning any answer (or, in Mathematica's case returning the input
> unevaluated) or using ad hoc methods which which will give the right answer in
> certain cases but may also give erroneous ones in other. In mathematics this
> sort of thing does not arise because we are not forced to use general
> algorithms to solve particular problems, but can treat each as a special case.
> Obviously this is not a feasible approach for computer science. When I wrote
> that the main issue is one of interface I was referring mainly to these sort
> of situations. Basically the question is how to make the user aware that he is
> entering into a territory where there are no general methods and where correct
> answers are not guaranteed. I do not think Mathematica is very good at this.
> Sometimes warning messages are issued (e.g. by Solve, then it is using inverse
> functions), but in other cases only partially true or even wrong solutions are
> returned without any warning, even though this cannot be said to involve a
> "bug", because this sort of thing is to some extent inevitable (unless when
> restricted Mathematica only to those areas where perfectly general and
> infallible methods exist, which would make it a pretty boring and much less
> useful program).
> I think this deals with all the rest of the points you make. You seem to be
> assuming that everything can be dealt by general algorithms and the problem is
> only with implementing them. Well, maybe because our subjects are different,
> (I am an algebraic top0ologist) but to me this seems ridiculous. I can produce
> countless examples of mathematical problems which can't be dealt by any
> general algorithm, and others, where there are general algorithms which break
> down in various special cases. In fact from my point of view essentially all
> interesting mathematics is of this kind. This does make computer programs
> useless but it means that the program has to be used as a subsidiary tool, the
> main one being your brain and your knowledge of mathematics. With this
> approach I am, as I wrote, not terribly worried by Mathematica giving answers
> like the one in this case, because I can see what they mean and make as good
> use them as I would of a "correct answer", whatever that may mean in this case
> (and that itself is not quite well defined actually).
> Andrzej
>> Of course if one uses a computer algebra system whose model of
>> mathematics
>> is broken, or which has outright bugs in it, then there are
>> difficulties,
>> just as if you were using a C compiler with a bug.
>>> That
>>> means that understanding what is going on is and is going to remain
>>> essential, whether the answers returned are "correct" or not. That is why I
>>> am not terribly worried by "wrong" answers as long as that are easily
>>> understandable.
>> And if the answer is very plausible, but wrong just the same, what are
>> you going to do?  It is the responsibility of the computer scientists
>> and the mathematicians who build computer algebra systems to avoid the
>> commission of errors that result in errors.
>> The view of certain physicist-programmers that suggest it is ok to
>> return
>> wrong answers because a good scientist would always seek independent
>> confirmation, suggest that the role of computers in symbolic mathematics
>> is trivialized to doing only what can be reproduced or confirmed by
>> paper and pencil in a reasonable time.  I believe the role of computers
>> can be a good deal stronger. For example, a computer could be the
>> world's most expert source of knowledge about integration.  It could
>> include
>> all tabulated integrals, and all algorithms.  Of course a algorithm W
>> that sometimes returns wrong answers could NOT be used unless the
>> program
>> itself used some failure-proof program that called W, and rejected all
>> answers that were wrong.
>> RJF
>>> Actually I think they can be more useful than right answers
>>> which are not "understandable" (like the billionth digit of Pi etc), though
>>> of course understandable right answers are preferable.
>>>> Andrzej Kozlowski wrote:
>>>>> My mathematica 4 (for MacOS) gives:
>>>>> In[1]:=
>>>>> Table[Integrate[Abs[Cos[x]], {x, 0, (Pi/2)*n}], {n, 1, 5, 2}]
>>>>> Out[2]=
>>>>> {1, 3, 5}
>>>>> which undobtedly is correct, so I suppose you must be referring to
>>>>> something
>>>>> else.
>>>>> Perhaps you have in mind something like this:
>>>>> In[3]:=
>>>>> Integrate[Abs[Cos[x]], {x, 0, (Pi)*a}] /. a -> 3/4
>>>>> Out[3]=
>>>>> 1
>>>>> -(-------)
>>>>> Sqrt[2]
>>>>> In[4]:=
>>>>> Integrate[Abs[Cos[x]], {x, 0, (Pi)*(3/4)}]
>>>>> Out[4]=
>>>>> 1
>>>>> 2 - -------
>>>>> Sqrt[2]
>>>>> The first answer is "wrong" but it is quite understandable and, in a way,
>>>>> reasonable how it is obtained. To see this note that Mathematica gives:
>>>>> In[5]:=
>>>>> Integrate[Abs[Cos[x]], {x, 0, z}]
>>>>> Out[5]=
>>>>> 2
>>>>> Sqrt[Cos[z] ] Tan[z]
>>>>> The indefinite  integral is interpreted as a path integral in the complex
>>>>> plane. Is this answer right or wrong? There is nothing mathematically
>>>>> wrong
>>>>> with it, except that the function Abs[Cos[z]] is not analytic everywhere
>>>>> and
>>>>> there is no "unique" correct answer, independent of the path chosen (and
>>>>> hence also of z). In my opinion Mathematica does here as much as could be
>>>>> reasonably expected of it in this sort of situation. The alternative would
>>>>> be for it not to give any answer to "path integrals" involving
>>>>> non-analytic
>>>>> functions. At least then there would be less complaint about  "bugs" in
>>>>> integration.
>>>>> --
>>>>> Andrzej Kozlowski
>>>>> Toyama International University, JAPAN
>>>>> For Mathematica related links and resources try:
>>>>> <>
>>>>> on 9/2/00 2:57 AM, Paul Cally at cally at wrote:
>>>>>> Try integrating | cos u| from u=0 to u = Pi x. Despite the integrand
>>>>>> being everywhere
>>>>>> non-negative, Mathematica 4 gives a result which jumps DOWNWARDS by 2 at
>>>>>> x=1/2, 3/2, 5/2, .... I thought these simple integration errors had been
>>>>>> sorted out by
>>>>>> Wolfram years ago!
>>>>>> Paul Cally
>>>>>> --
>>> -
>>>>>> -+
>>>>>> |Assoc Prof Paul Cally            |    Ph:  +61 3 9905-4471
>>>>>> >>>>> |
>>>>>> |Dept of Mathematics & Statistics |    Fax: +61 3 9905-3867
>>>>>> >>>>> |
>>>>>> |Monash University                |    paul.cally at
>>>>>> >>>>> |
>>>>>> |PO Box 28M, Victoria 3800        |
>>>>>> >>>>> |
>>>>>> |AUSTRALIA                        |
>>>>>> >>>>> |
>>> -
>>>>>> -+
>>> --
>>> Andrzej Kozlowski
>>> Toyama International University
> --
> Andrzej Kozlowski
> Yokohama, JAPAN

Andrzej Kozlowski
Yokohama, JAPAN

  • Prev by Date: Re: Re: Simple integral wrong
  • Next by Date: Displaying Mixed Numbers
  • Previous by thread: Re: Re: Simple integral wrong
  • Next by thread: Re: Re: Simple integral wrong