RE: Emergent Help: NSolve Problems!
- To: mathgroup at smc.vnet.net
- Subject: [mg39797] RE: [mg39753] Emergent Help: NSolve Problems!
- From: "David Park" <djmp at earthlink.net>
- Date: Fri, 7 Mar 2003 03:40:17 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Chengzhou,
It looks like the first root is sensitive. However, it appears that you
retyped the s value and thus threw away 10 of its digits. Save the solutions
and then you can substitute them directly with ReplaceAll (\.). Furthermore,
you can get Mathematica to return exact solutions and then use N to obtain
extended precision.
temp[s_] = s^10 + 10 s^9 + 10 s^8 + 10 s^7 + 10 s^6 + 10 s^5 + 10 s^4 + 1;
sols = Solve[temp[s] == 0, s]
{{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 + 10*#1^8 +
10*#1^9 + #1^10 & , 1]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 2]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 3]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 4]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 5]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 6]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 7]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 8]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 9]},
{s -> Root[1 + 10*#1^4 + 10*#1^5 + 10*#1^6 + 10*#1^7 +
10*#1^8 + 10*#1^9 + #1^10 & , 10]}}
Those are Root objects. Look them up in Help. We can now substitute them
using machine precision and obtain
temp[s] /. sols // N // Chop
{-4.76837*^-7, 0, 0, 0, 0, 0, 0, 0, 0, 0}
But if we use N to first convert the solutions to 20 place precision, we
obtain
temp[s] /. N[sols, 20] // Chop
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
From: Chengzhou Wang [mailto:wcz at ece.ucsd.edu]
To: mathgroup at smc.vnet.net
Hi, guys
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.
Thanks in advance!
PS: Please reply (cc) to my email. I did not subscribe my email to the
this email group!
--
Chengzhou