Re: Emergent Help: NSolve Problems!

*To*: mathgroup at smc.vnet.net*Subject*: [mg39784] Re: [mg39753] Emergent Help: NSolve Problems!*From*: BobHanlon at aol.com*Date*: Fri, 7 Mar 2003 03:31:35 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

In a message dated 3/6/03 4:07:23 AM, wcz at ece.ucsd.edu writes: > I have some complicated polynomials, and I want to calculate its roots. > HOwever, when I use NSolve, it creates some problems. Say a simple > example: > > temp[s_]=s^10+10 s^9+ 10 s^8 +10 s^7 +10 s^6+ 10 s^5 +10 s^4 +1; > NSolve[temp[s]==0, s] > > It will give: > > Out[4]= {{s -> -8.99998}, {s -> -1.06539}, {s -> -0.468828 - 0.886239 I}, > > > {s -> -0.468828 + 0.886239 I}, {s -> -0.409684 - 0.469948 I}, > > > {s -> -0.409684 + 0.469948 I}, {s -> 0.401048 - 0.312597 I}, > > > {s -> 0.401048 + 0.312597 I}, {s -> 0.51015 - 0.878693 I}, > > > {s -> 0.51015 + 0.878693 I}} > > But when I plug in the first number, which is "-8.99998", it should give a > value close to zero. However, it gives: > > In[5]:= temp[-8.99998] > Out[5]= -411.473 > > The other roots seems OK. Does anyone know why? This is just a simple > example. I have some more complicated polynomials to deal with. > > temp[s_]=s^10+10 s^9+ 10 s^8 +10 s^7 +10 s^6+ 10 s^5 +10 s^4 +1; soln = NSolve[temp[s]==0, s]; The first root is not -8.99998 that is merely the rounded output for display. Its machine precision value is soln[[1]] // InputForm {s -> -8.999981180131652} Using the machine precision results temp[s] /. soln // Chop {-9.53674*^-7, 0, 0, 0, 0, 0, 0, 0, 0, 0} The function is changing very rapidly in the vicinity of that root. This is easily confirmed using Plot. Bob Hanlon