Re: Possible bug in NSolve[equation, variable, precission] 2
- To: mathgroup at smc.vnet.net
- Subject: [mg74334] Re: Possible bug in NSolve[equation, variable, precission] 2
- From: "dimitris" <dimmechan at yahoo.com>
- Date: Mon, 19 Mar 2007 01:59:25 -0500 (EST)
- References: <etg4m9$ioi$1@smc.vnet.net>
Argh! First I didn't point out that Solve is preferable in low degree polynomial equations, now I realize we have two solutions for the equation poly==0. (Thanks Daniel!) Yesterday it was a sunny day here in Greece (~20 degrees C ) so don't misjudge me for my mistakes! Let's make one more attempt: In[29]:= Clear["Global`*"] Print[StyleForm["working version", FontColor -> Blue]] $Version Print[StyleForm["your polynomial", FontColor -> Blue]] poly = 171142046150220198693105489 - 16023210221608713837587916*x - 2020825892011586434364754*x^2 + 190894692033395024364972*x^3 + 6039743423966949379761*x^4 - 568929229651998950400*x^5 - 470066550477520896*x^6 + 2821109907456*x^7 Print[StyleForm["your second polynomial", FontColor -> Blue]] poly2 = Expand[poly/9] Print[StyleForm["solution of the equation poly=0", FontColor -> Blue]] Timing[sols = Solve[poly == 0, x]] Print[StyleForm["solution of the equation poly2=0", FontColor -> Blue]] Timing[sols2 = Solve[poly2 == 0, x]] Print[StyleForm["numerical approximation with 20 digits precision", FontColor -> Blue]] (N[#1, 20] & )[x /. sols] (N[#1, 20] & )[x /. sols2] Print[StyleForm["numerical approximation with 100 digits precision", FontColor -> Blue]] (N[#1, 100] & )[x /. sols] (N[#1, 100] & )[x /. sols2] Regards Dimitris =CF/=C7 Julian Aguirre =DD=E3=F1=E1=F8=E5: > Dear group, > > Mathematica 5.2 chokes solving numerically a polynomial equation. > > In[1] := $Version > Out[1]= 5.2 for Mac OS X (64 bit) (June 20, 2005) > > In[2]:= poly=171142046150220198693105489-16023210221608713837587916 > x-2020825892011586434364754 x^2+190894692033395024364972 > x^3+6039743423966949379761 x^4-568929229651998950400 > x^5-470066550477520896 x^6+2821109907456 x^7; > > In[3]:= poly2=Expand[poly/9]; > > In[4]:= NSolve[poly==0,x] > Out[4]= {-1211.83, -13.0015, -13.0014, 11.923, 12.0809, 12.2509, > 167826.} > > (* Up to this moment, everything is O.K. But *) > > In[5]:= NSolve[poly==0,x,20] > Out[5]= $Aborted (* after a loooong time *) > > (* However, the following works as expected*) > > In[6]:= x/.NSolve[poly2==0,x,20] > Out[6]= {-1211.8267955098487289, -13.001455891126, -13.001441554521, > 11.92303189062617, 12.08089051352363, 12.25087466630727, > 167826.26017849924816} > > Let me say that I have used Mathematica to solve thousands (probably > millions) of equations like the one above. There must be some magic in > the coefficients! > > Julian Aguirre > University of the Basque Country