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