MathGroup Archive 2009

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

Search the Archive

Re: Re: Solve / NSolve

  • To: mathgroup at
  • Subject: [mg95314] Re: [mg95296] Re: Solve / NSolve
  • From: Andrzej Kozlowski <akoz at>
  • Date: Thu, 15 Jan 2009 06:11:14 -0500 (EST)
  • References: <gkgouo$3sg$> <> <>

On 14 Jan 2009, at 17:31, Andrzej Kozlowski wrote:

> On 14 Jan 2009, at 11:55, Jean-Marc Gulliet wrote:
>>> Solve is a
>>> *symbolic* solver, i.e. it manipulates the equations in  
>>> essentially an
>>> algebraic way (which does not mean that it does so in a similar  
>>> fashion
>>> as a human being would do). OTOH, NSolve uses *numeric* algorithms.
>>> (Both sets of tools and algorithms have virtually nothing in  
>>> common in
>>> terms of strategies; roughly speaking, symbolic manipulations for  
>>> the
>>> former, iterative computations for the latter, for instance.)
> It is a common misconception  that Solve is "algenriaic" while  
> NSolve uses "iterative computations" (it generally does not,  
> FindRoot does that), or that the algorithms used by Solve and NSolve  
> have "nothing in common". Both Solve and NSolve are primarily  
> intended for solving algebraic equations. They also have quite a lot  
> in common. In fact, in when NSolve is given a non-algebraic system  
> it simply passes it to Solve and does not attempt to solve it using  
> iterative methods.  For algebraic systems both Solve and NSolve rely  
> on Groebner basis, but while Solve uses exact Groeber basis NSolve  
> (at least with WorkingPrecision other than MachiePrecision) relies  
> on Mathematica's implementation of numerical GroebnerBasis  
> (GroebnerBasis[...,CoefficientDomain->InexactNumbers]), which in  
> turns relies on Mathematica's "significance arithmetic".
> To sum up, while Solve and NSolve usually (but not always) use  
> different algorithms, they are both essentially algebraic solvers.  
> In fact NSolve is more "pure algebraic" solver since it won't even  
> touch non-algebraic equations passing them to Solve to try its luck  
> on them (which is usually lacking).
> Andrzej Kozlowski

I guess, the statement that NSolve "generally" does not use iterative  
methods was a bit unclear. More accurately, for a single univariate  
polynomial equations NSolve uses the Jenkins-Traub algorithm (as do  
most other CAS), which is iterative. For general polynomial systems,  
however, numerical Groebner basis is used, which ultimately leads to  
solving a univariate polynomial equation, which of course, uses an  
iterative method. So in this sense Jean-Marc was correct. However, the  
Jenkins-Traub method, even though iterative, unlike the Newton-Raphson  
method does not perform any differentiation, hence it can be  
considered "algebraic". Compare this with FindRoot, which uses the  
Newton-Raphson and works with any sufficiently smooth functions, not  
necessarily algebraic ones.

Andrzej Kozlowski

  • Prev by Date: Re: Maximizing function which defines a routine
  • Next by Date: Re: Problems using MathLink
  • Previous by thread: Re: Re: Solve / NSolve
  • Next by thread: Re: Solve / NSolve