MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Beware of NSolve - nastier example

  • To: mathgroup at smc.vnet.net
  • Subject: [mg50346] Re: Beware of NSolve - nastier example
  • From: carlos at colorado.edu (Carlos Felippa)
  • Date: Sat, 28 Aug 2004 04:37:58 -0400 (EDT)
  • References: <200408200858.EAA12533@smc.vnet.net> <cg6srb$odf$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Daniel Lichtblau <danl at wolfram.com> wrote in message news:<cg6srb$odf$1 at smc.vnet.net>...
< ... >
> 
> On the flip side, the heuristics that decide when a root actually 
> satisfies the equation can be a bit lax. Hence parasites can wind up in 
> the returned solution set. One way to influence this is to rescale the 
> equation e.g. multiplying by some large number.
> 
> I'll look into tightening some of the decisions as to what constitutes a 
> sufficiently small residual. The near-double-root issue goes with the 
> territory and is in no way incorrect behavior.
> 
> What is NR, by the way?
> 
> 
> Daniel Lichtblau
> Wolfram Research

Newton and Raphson from Olde England.  Joseph Raphson was
rumored to be Newton's programmer.

BTW your suggestion to scale the equation does yield some
improvements -- at least no wrong roots appear:

f=10^8*(5/432-11/(27*Sqrt[70]*Sqrt[19-1890*x])+x/(2*Sqrt[38/35-(108+1/10000000)*x]));
Print[N[Solve[f==0,x]]];  (* gives 3 roots *)
Print[NSolve[f,x,16]];    (* 3 correct roots *)
Print[NSolve[f,x,21]];    (* 2 roots, missed 1 *)
Print[NSolve[f,x,24]];    (* 2 roots, missed 1 *)
Print[NSolve[f,x,28]];    (* 2 roots, missed 1 *)
Print[NSolve[f,x,32]];    (* 2 roots, missed 1 *)
Print[NSolve[f,x,64]];    (* 2 roots, missed 1 *)
Print[NSolve[f,x,128]];  (* 3 correct roots  *)


  • Prev by Date: Re: Integrate UnitStep, Bug?
  • Next by Date: Re: Random rook's tour of a rectangle
  • Previous by thread: Re: Beware of NSolve - nastier example
  • Next by thread: Re: Re: Beware of NSolve - nastier example