Re: Possible bug in NSolve[equation, variable, precission]
- To: mathgroup at smc.vnet.net
- Subject: [mg74349] Re: Possible bug in NSolve[equation, variable, precission]
- From: "dimitris" <dimmechan at yahoo.com>
- Date: Mon, 19 Mar 2007 02:07:32 -0500 (EST)
- References: <etg4m9$ioi$1@smc.vnet.net><etijrq$j05$1@smc.vnet.net>
Of course I suggested you using Solve for this particular equation (or in general equations and systems of equations of polynomials of low degree). For polynomials of high degree NSolve is much more preferable concerning timing issues. I should have pointed out this! P=2ES. Thanks a lot for mentioning my vagueness Andrzej! Faithfully, Dimitris =CF/=C7 dimitris =DD=E3=F1=E1=F8=E5: > Why use NSolve in your equation? Use Solve instead! > > > In[1]:= > 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[poly == 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 > > > Julian Aguirre wrote: > > 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