Re: Interval arithmetic bug
- To: mathgroup at smc.vnet.net
- Subject: [mg90783] Re: [mg90761] Interval arithmetic bug
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Thu, 24 Jul 2008 04:52:11 -0400 (EDT)
- References: <200807230958.FAA28179@smc.vnet.net>
On 23 Jul 2008, at 11:58, green tea wrote: > In[1]:= Limit[Sin[x], x -> Infinity] > > Out[1]= Interval[{-1, 1}] > > > > > In[2]:= Limit[Sin[x + Pi/4], x -> Infinity] > > Out[2]= Interval[{-Sqrt[2], Sqrt[2]}] > > > > > In[3]:= TrigExpand[Sin[x + Pi/4]] > > Out[3]= Cos[x]/Sqrt[2] + Sin[x]/Sqrt[2] > > > > > In[4]:= (Limit[#1, x -> Infinity] & ) /@ {Cos[x]/Sqrt[2], > Sin[x]/Sqrt[2]} > > Out[4]= {Interval[{-(1/Sqrt[2]), 1/Sqrt[2]}], > Interval[{-(1/Sqrt[2]), 1/Sqrt[2]}]} > > > > > In[5]:= Plus @@ % > > Out[5]= Interval[{-Sqrt[2], Sqrt[2]}] > > > > > In[6]:= $Version > > Out[6]= "6.0 for Microsoft Windows (32-bit) (May 21, 2008)" > > > > > oh my god.. > What do you mean by a "interval arithemtic bug"?. Interval arithmetic behaves exactly as it should, and it is perfectly correct that: Interval[{-(1/Sqrt[2]), 1/Sqrt[2]}] + Interval[{-(1/Sqrt[2]), 1/Sqrt[2]}] Interval[{-Sqrt[2], Sqrt[2]}] It is also quite correct that: Sin[# + Pi/4] &@Interval[{-Infinity, Infinity}] Interval[{-1, 1}] and also this: Cos[#]/Sqrt[2] + Sin[#]/Sqrt[2] &@Interval[{-Infinity, Infinity}] Interval[{-Sqrt[2], Sqrt[2]}] The reason is that interval arithmetic is *supposed to* only return "upper bounds", that is unions of intervals that contain the "correct answer". They will in general be larger than the optimal interval and will be different for different expressions even when they are mathematically equivalent. All of these are well known and "normal" properties of interval arithmetic and there is nothing buggy about the. The reason for this is that the purpose of interval arithmetic is estimation of errors and proofs of convergence. What one normally uses interval arithmetic to do is showing that the error in some computation is less than some specified number. For this reason it is enough to obtain any interval that of length smaller than the one that is required, and the fact that this interval may be much larger than the minimal one, is less important then the computational efficiency of the procedure. In fact the only issue involved here it is not an "interval arithmetic bug" but of imprecise documentation of Limit. Te problem is that interval arithmetic only tries to find an "upper bound" for the range of the function whose limit is being computed but the documentation for Limit says Limit returns Interval objects to represent ranges of possible values, for example at essential singularities. The word "represent" suggests that the interval object returned by Limit[f[x],x->a] consists of all the limit points of the function f for all sequences x_n->a, but actually what is returned is an interval object that contains all such points but which also contains points that are not themselves limits of the given function. I think this ought to be made more clear, that's all. Andrzej Kozlowski
- References:
- Interval arithmetic bug
- From: green tea <cetech07@gmail.com>
- Interval arithmetic bug