I would like to obtain ALL the real roots of a system of 8 polynomial equations in 8 variables, where the maximum degree of each equation is 3. Is this doable? What is the best software to do this?
1 Answers
You will need to use a multi-dimensional root finding method.
Newton's should be fairly easy to implement (simple algorithm) and you may find some details about this and other methods here.
As far as I understand, it's not likely to be straightforward to solve 8 simultaneous cubic equations with a very general direct method.
Depending on your problem, you may also want to check if it's analogous to the problem of fitting a cubic spline to a set of points. If it is, then a simple direct algorithm is available here.
For the initial conditions, you might need to use well-dispersed random starting points in your domain of interest. You could use sobol sequences or some other low-discrepancy random number generator to efficiently generate random numbers to fill-out the space under consideration.
You may also consider moving this question to math exchange where you might have a better chance of having this answered correctly.

- 2,216
- 1
- 13
- 18
-
I need all real solutions, and multidimensional-root-finding algorithms such as the Newton method give me one solution, and I have checked that solving the system with multidimensional root findings many times starting from different initial conditions does not find some of the solutions. – James Jul 14 '14 at 12:31
-
Aah, I missed writing the initial conditions part, but you've already tried that. May I ask how you generated the random starting points in 8 dimensions? – hnk Jul 14 '14 at 12:34
-
If x_1, ..., x_8 are the variables, I set x_i = a*R, where a is fixed and R is a random number uniformly distributed in [-1,1]. I draw a different R for every x_i. I then solve many times for a given a and I try many different values of a. – James Jul 14 '14 at 12:43
-
Got it. The problem with that approach is that your 8-dimensional vector might not be 'evenly' spread out in the 8-d space. You'll need to use a low discrepancy sequence for achieving that. Even then, I believe there might be a more efficient way of generating the results. This is almost a brute-force way to find the initial values close enough – hnk Jul 14 '14 at 12:46