Finding all roots of polynomial system (numerically)

I want to numerically find all the roots of a system of polynomials (n equations in n variables). Since I can compute the Jacobian for the system (analytically or otherwise), I can use the Newton Raphson method to find a single root (e.g. as described in the Numerical Recipes book).

How do I find the other roots (if they exist), either using a different algorithm or extending the Newton Raphson method? If this is not always possible, what about finding all the roots in a bounded interval [a,b]? Other roots may exist, but I only need to find the ones that lie in the interval - however, it is possible for multiple roots to lie in the interval?

Thanks!

• This is a much studied topic, see, eg., en.wikipedia.org/wiki/…. Try netlib.org/lapack for software. – copper.hat Aug 18 '12 at 21:16
• One tip: don't program it yourself. Use one of the existing libraries. – Fabian Aug 18 '12 at 21:29
• Thanks, but I've been looking around and I can't put the two together: there's methods for finding a single root of a polynomial like Newton-Rhapson, methods for finding all roots of a polynomial like Durand-Kerner, and methods for finding a single root of a system of polynomials. But how do you find all roots of a system? Could you link an example? Thanks – Kurt Aug 18 '12 at 22:52
• You've looked into Gröbner bases by any chance? Barring that, see this book for a discussion on using homotopy methods, and this FORTRAN library. – J. M. is a poor mathematician Aug 19 '12 at 3:31