Re: bug ?
- To: mathgroup at smc.vnet.net
- Subject: [mg122347] Re: bug ?
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Wed, 26 Oct 2011 17:37:30 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201110251016.GAA05769@smc.vnet.net>
On 10/25/2011 05:16 AM, swiss wrote: > Following rational function has a double pole matched by a double root at (4+\sqrt{17})/4. The first result is correct, the other ones are false, but come without warning. Can somebody explain this to me? > > In[50]:= Limit[-(((s (4 s - 5)^2 - (5 + 3 Sqrt[17])/ > 8 (4 s + 1)) ((4 s - 5)^2 - > 4 (5 + 3 Sqrt[17])/8 (4 s - 7)))/(16 s^2 - 32 s - 1)^2), > s -> 1/4 (4 + Sqrt[17])] > > Out[50]= 1/544 (331 - 19 Sqrt[17]) > > In[51]:= 1/544 (331 - 19 Sqrt[17]) // N > > Out[51]= 0.46445 > > In[52]:= -(((s (4 s - 5)^2 - (5 + 3 Sqrt[17])/ > 8 (4 s + 1)) ((4 s - 5)^2 - > 4 (5 + 3 Sqrt[17])/8 (4 s - 7)))/(16 s^2 - 32 s - 1)^2) /. > s -> 1/4 (4 + Sqrt[17]) // Simplify > > Out[52]= 1/16 (1 + 2 Sqrt[17]) > > In[53]:= 1/16 (1 + 2 Sqrt[17]) // N > > Out[53]= 0.577888 > > In[54]:= -(((s (4 s - 5)^2 - (5 + 3 Sqrt[17])/ > 8 (4 s + 1)) ((4 s - 5)^2 - > 4 (5 + 3 Sqrt[17])/8 (4 s - 7)))/(16 s^2 - 32 s - 1)^2) /. > s -> 1/4 (4 + Sqrt[17.]) > > Out[54]= 0.09375 In[69]:= expr = -(((s (4 s - 5)^2 - (5 + 3 Sqrt[17])/ 8 (4 s + 1)) ((4 s - 5)^2 - 4 (5 + 3 Sqrt[17])/8 (4 s - 7)))/(16 s^2 - 32 s - 1)^2); Just to verify the claims about the limit: e2 = Together[expr, Extension -> Sqrt[17]] e3 = Simplify[e2 /. s -> 1/4 (4 + Sqrt[17])] Out[70]= ((17 + Sqrt[17] - 8*s)*(31 - 7*Sqrt[17] - 48*s + 8*Sqrt[17]*s + 32*s^2))/ (16*(-4 + Sqrt[17] + 4*s)^2) Out[71]= (1/544)*(331 - 19*Sqrt[17]) Fine so far. The below numerical computation should give an idea of where that .09375 arises. It is simply a bady conditioned evaluation of a quotient of approximate zeros. They would be exactly zero, where we doing exact arithmetic. In[66]:= num = Numerator[expr] /. s -> (1/4.)*(4 + Sqrt[17]) den = Denominator[expr] /. s -> (1/4.)*(4 + Sqrt[17]) num/den Out[66]= 1.8932661725304283*^-29 Out[67]= 2.0194839173657902*^-28 Out[68]= 0.09375 The bad exact substitution is more of a problem. We see below that it is certainly an indeterminate form. In[78]:= numex = Numerator[expr] /. s -> (1/4)*(4 + Sqrt[17]); denex = Denominator[expr] /. s -> (1/4)*(4 + Sqrt[17]); Simplify[numex] Simplify[denex] Simplify[numex/denex] Out[80]= 0 Out[81]= 0 Out[82]= (1/16)*(1 + 2*Sqrt[17]) The upshot is Mathematica is not recognizing a 0/0 situation and is, somewhere, removing a zero rather than finding an indeterminate. This can happen in internals of algebraic manipulation, wherein pieces can be worked on in a nested fashion and some zeroesmight be more "hidden" than others. In this case I do not know if it shows a bug or a feature (I will have a closer look though). Daniel Lichtblau Wolfram Research
- References:
- bug ?
- From: swiss <gregoire.nicollier@hevs.ch>
- bug ?