Re: Re: Solve / NSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg95307] Re: [mg95296] Re: Solve / NSolve
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Thu, 15 Jan 2009 06:09:54 -0500 (EST)
- References: <gkgouo$3sg$1@smc.vnet.net> <200901141055.FAA18013@smc.vnet.net>
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 MachinePrecision) 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