Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

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

Search the Archive

Re: Can Integrate[expr,{x,a,b}] give an incorrect result?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg82635] Re: Can Integrate[expr,{x,a,b}] give an incorrect result?
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Fri, 26 Oct 2007 05:32:11 -0400 (EDT)
  • References: <20071025164458.769$l2@newsreader.com> <A81CC3A3-4FEB-4497-BD4A-D2382591866F@mimuw.edu.pl>

I wrote that in a hurry just before a lecture so now I noticed that  
some clarifications are needed. First, the sentences:

> ven without any investigation I would say that it is much
> more likely that this integral should not be evaluated by means of
> the Leibniz rule (substituting the limits into the anti-derivative
> and subtracting).

That of course means Mathematica should not evaluate it in this way.  
It seems obvious to me that that is what I meant.

> Now let's compute the indefinte integral:
>
> indef = Integrate[int, t];
>
> Using the Liebniz rule gives clearly the wrong answer:
>
> indef = Integrate[int, t];


here I actually posted two times the same thing into the e-mail  
instead what I wanted to post which was indef with the limits  
substituted in. I saw that later but did not think it worth while  
sending a correction.

> so the Leibniz rule does not apply. There is no reason at all to
> suspect the very reliable function Simplify and almost as realiable
> Interate.


That means, of course that the fault lies in Mathematica's definite  
integration. Not to see that one has to be, in my opion, incredibly  
literally minded. I should by now have learned that some people on  
this list are exactly that, but as I write most post to the MathGroup  
in a great hurry and cannot be fully explicit about every point, you  
have to you either assume there are things that are left implied  
(inluding a certian amount of irony and jokes) or alternatively just  
do not read them.

Andrzej Kozlowski







On 26 Oct 2007, at 09:26, Andrzej Kozlowski wrote:

> I think you are just making excuses, which are not worth replying  
> to. If I blamed Bobby for anything it was for suggesting that  
> Simplify or D or indefinite integration was at faullt. To prove  
> this I will simply quote from my original mail:
>
>
> First is a quote from Bobby:
>
>> So, from that, D and/or Simplify must be wrong.
>>
>
> Must they? Even without any investigation I would say that it is much
> more likely that this integral should not be evaluated by means of
> the Leibniz rule (substituting the limits into the anti-derivative
> and subtracting).
>
> Actually, as you know very well since he sent this message also to  
> you,Bobby has since apologized for claiming that, (although I  
> don'ts see why one would actually have to apologize for anything of  
> this kind). I see I did not actually say this happens often but he  
> words "even without nay investigation" obviously sugges that this  
> sort of behaviour is fairly common in Mathemaitca.
>
> Further more, I wrote:
>
> Now let's compute the indefinte integral:
>
> indef = Integrate[int, t];
>
> Using the Liebniz rule gives clearly the wrong answer:
>
> indef = Integrate[int, t];
>
> but why should it give the right answer? The function indef is
> clearly discontinuous in the interval 0 to 2Pi
>
> Plot[indef, {t, 0, 2 Pi}]
>
> so the Leibniz rule does not apply. There is no reason at all to
> suspect the very reliable function Simplify and almost as realiable
> Interate.
>
> Where is there here any mention of definite integration except in  
> saying that the Newton-Leibniz rule should not be applied here?
>
> What is worse, you wrote that Mathematica as well as every CAS  
> known to you uses the t=Tan[th/2] substituiton (which you call the  
> Weierstrass substitution) even though you have no gounds for  
> beleiving that and even after I wrote to you that the Risch  
> algorithm (wich you clearly do not know) does not use it because it  
> does not need it - it can deal with such integrals by converting  
> then to Exponentials and Logs (TrigToExp). Now Daniel Lichblau who  
> knows the source code has confirmed that Mathematica indeed does  
> not use the "Weierstrass substitution". So much for your  
> "certianty" about this matter.
>
> Andrzej Kozlowski
>
>
>
>
>
>
>
> On 26 Oct 2007, at 05:44, David W. Cantrell wrote:
>
>> [Message also posted to: comp.soft-sys.math.mathematica]
>>
>> Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:
>>> As I don't see anything concrete to reply to in your post I will  
>>> just
>>> restate my version of this whole argument and leave it at that.
>>>
>>> I originally replied to Bobby's post in which he seemed to question
>>> the reliability of Simplify or D (or, perhaps, of indefinite
>>> integration). I replied that Mathematica's Simplify and D were
>>> practically 100% reliable and Integrate (by which I  have always
>>> meant the function that computes indefinite integrals) was nearly as
>>> reliable except when its heuristics failed or perhaps when it  
>>> entered
>>> an unimplemented branch of the Risch algorithm. I attributed the
>>> problem the OP was having to the way Mathematica evaluated the
>>> definite integral by applying the Newton-Leibniz rule without
>>> detecting that it should't do so in this case.
>>
>> You may well have made that attribution in your head. But what you  
>> _wrote_
>> made it seem to me as though you thought Mathematica was faultless  
>> in this
>> matter, at least in relation to the specific problems at hand, and  
>> that
>> Bobby or the OP was instead at fault. I have now re-read your  
>> original
>> reply, and it still seems that way to me. That, in large measure,  
>> is why I
>> replied to you, rather than to Bobby or the OP.
>>
>> BTW, if I had seen Daniel Lichtblau's reply, I most likely would  
>> never have
>> replied to you. Unlike you, he made it clear that Mathematica was  
>> at fault.
>> (I overlooked Daniel's post only because its severely curtailed  
>> title,
>> "give an", made it seem as though it were not part of this thread.)
>>
>>> I did not comment in any way on why the latter problem occured,
>>> except for remarking that it happened rather often.
>>
>> You did not make that remark in your reply to Bobby; look at what you
>> wrote. OTOH, I made such a remark when replying to you: "This happens
>> fairly often, the subject of this thread being a case in point."
>>
>>> At this point you entered, with a reply to me, whose purpose I still
>>> do not understand.
>>
>> I explained that above.
>>
>>> When I read it it seemed to me that you must be
>>> disagreeing with something I had written. As there was nothing at  
>>> all
>>> about Simplify or D in your message, I naturally concluded that you
>>> were criticizing the way Mathematica performed indefinite  
>>> integration
>>> - what I call Integrate. You seem to be suggesting that Integrate
>>> should somehow find a different anti-derivative.
>>
>> I did not say that _per se_, but perhaps it's reasonable that you  
>> thought I
>> seemed to suggest such.
>>
>> But your "should" is too strong a word since there are at least  
>> two options
>> which would keep Mathematica from making the error in integration  
>> from 0 to
>> 2Pi, mentioned by the OP:
>> 1.  Leave the result of indefinite integration as
>> it is, but then, since that result is not an antiderivative on the  
>> desired
>> interval, improve Mathematica's detection of discontinuities so  
>> that it
>> will not apply Newton-Leibniz incorrectly.
>> or
>> 2.  Change the result of indefinite integration in problems in  
>> which the
>> classic Weierstrass substitution, u = tan(x/2), had been used so that
>> discontinuities introduced as an artifact of that substitution are  
>> not
>> present in the result.
>>
>> My preference is option 2. In problems such as that mentioned by  
>> the OP,
>> since option 2 gives an antiderivative on R, it allows us to use
>> Newton-Leibniz naively, there being then no discontinuities with  
>> which to
>> be concerned. But again, I cannot say that the people at Wolfram  
>> Research
>> should choose option 2, instead of option 1. For all I know, they  
>> may have
>> an excellent reason for rejecting the option I prefer.
>>
>>> That's why I asked
>>> you for another algorithm - (for indefinite integration of course)
>>> that would return a different anti-derivative than the Risch
>>> algorithm. But now it turns out that you had nothing at all to  
>>> add to
>>> what I had written, except perhaps the claim, which you did not make
>>> in your first post, that there is a reliable method of detecting
>>> discontinuities in the antiderivative.
>>
>> I didn't say that in my first post because one need not detect
>> discontinuities if you know that there are none to detect! The  
>> algorithm
>> performs as I described previously. Thus, for the OP's problem, it  
>> returns
>> an antiderivative on R.
>>
>>> But actually, if you re-read
>>> your own post you will see that in it you are (or at least seem to
>>> be) suggesting that a different anti-derivative should have been
>>> found rather than the discontinuities in the one actually used by
>>> Mathematica should have been detected. These are two rather  
>>> different
>>> claims.
>>
>> Indeed, they are different. The former corresponds to my "option  
>> 2" above,
>> the latter to my "option 1".
>>
>>> In any case, even assuming that what you meant was "that Mathematica
>>> should be better at detecting discontinuities in the anti- 
>>> derivative"
>>
>> Option 1.
>>
>>> I don't see in what way that is different from what I originally
>>> wrote?
>>
>> It differs significantly. You didn't say, or even hint, "that  
>> Mathematica
>> should be better at" anything. It seemed -- and still seems -- to  
>> me that
>> you were blaming Bobby or perhaps the OP, rather than Mathematica.  
>> As I
>> said previously, that is why I responded to you, rather than to  
>> someone
>> else.
>>
>> -------------------------------------------
>>
>> The following examples and comments will likely be of interest to  
>> anyone
>> following this thread. (It should also answer a few questions  
>> raised in
>> some private emails.)
>>
>> The classic Weierstrass substitution is u = tan(x/2). Its use  
>> typically
>> introduces spurious discontinuities in the result of an indefinite
>> integration.
>>
>> Consider
>>
>> In[4]:= Integrate[1/(2 - Cos[alpha - x]), x]
>>
>> Out[4]= -((2*ArcTan[Sqrt[3]*Tan[(alpha - x)/2]])/Sqrt[3])
>>
>> Although the function to be integrated is continuous on R, the  
>> result of
>> Integrate has discontinuities on R, due to the presence of
>> Tan[(alpha - x)/2], surely caused by a Weierstrass substitution.
>>
>> BTW, someone had questioned my assertion that Mathematica and  
>> other CASs
>> use Weierstrass substitution. That's certainly a reasonable question
>> because I have no way of proving that they use it. I based my  
>> assertion on
>> (1) what I had read in the literature and (2) the form of answers,  
>> such as
>> Out[4] above, which clearly seem to be the results of Weierstrass
>> substitutions. In a court of law, (1) might be called mere  
>> "hearsay" and
>> (2) might be called "circumstantial evidence". In any event, until  
>> someone
>> from Wolfram Research assures me that Weierstrass substitution is  
>> not used,
>> I shall assume that it is used.
>>
>> Now consider the definite integration
>>
>> In[5]:= defint = Integrate[1/(2 - Cos[alpha - x]), {x, 0, 2*Pi}];
>> defint /. alpha -> 20
>>
>> Out[5]= 0
>>
>> That is incorrect, presumably due to an improper use of Newton- 
>> Leibniz. Not
>> surprisingly, if we set alpha to 20 in the integration, we do get the
>> correct answer:
>>
>> In[6]:= Integrate[1/(2 - Cos[20 - x]), {x, 0, 2*Pi}]
>>
>> Out[6]= 2*Pi/Sqrt[3]
>>
>> The algorithm which I had mentioned takes a result such as Out[4],  
>> having
>> spurious jump discontinuities on R caused by the Weierstrass  
>> substitution,
>> and produces an antiderivative without those jumps.
>> For 1/(2 - Cos[alpha - x]), such an antiderivative on R is
>>
>> #    (x - 2 ArcTan[Sin[alpha - x]/(2 + Sqrt[3] - Cos[alpha - x])])/ 
>> Sqrt[3]
>>
>> Note that # is a little messier than Out[4]; perhaps that's why  
>> Wolfram
>> Research prefers Out[4], despite its discontinuities on R. OTOH,  
>> for a
>> definite integration on the real line, it is impossible to misuse
>> Newton-Leibniz with #, and so no error such as Out[5] could occur.
>>
>> David W. Cantrell
>



  • Prev by Date: Re: Can Integrate[expr,{x,a,b}] give an incorrect result?
  • Next by Date: Re: Can Integrate[expr,{x,a,b}] give an incorrect result?
  • Previous by thread: Re: Can Integrate[expr,{x,a,b}] give an incorrect result?
  • Next by thread: Re: Can Integrate[expr,{x,a,b}] give an incorrect result?