Homotopy Continuation fails to find all solutions


Apologies if this is in the wrong place. I am attempting to solve certain polynomial systems in Julia, using Homotopy Continuation. I know these have a certain number of solutions (364), however Homotopy Continuation only finds a subset of these. Are there any options I can change to ensure it finds all solutions? I have tried using total degree rather than polyhedral start systems. Sometimes this finds some extra solutions, but often not, and it takes significantly longer. Alternatively, are there other methods for computing all solutions to such systems?


using HomotopyContinuation

@var x1, x2, x3, x4, x5, x6, x7, x8, x9, x10

e1 = x2*x6^2 - x7*x10^3
e2 = -x1^2 + 2*x2*x5*x6 - 3*x7*x9*x10^2
e3 = -2*x1 + 2*x2*x4*x6 + x2*x5^2 - 3*x7*x8*x10^2 - 3*x7*x9^2*x10
e4 = 2*x2*x3*x6 + 2*x2*x4*x5 - 6*x7*x8*x9*x10 - x7*x9^3 - 3*x7*x10^2 - 1
e5 = 2*x2*x3*x5 + x2*x4^2 + 2*x2*x6 - 3*x7*x8^2*x10 - 3*x7*x8*x9^2 - 6*x7*x9*x10
e6 = 2*x2*x3*x4 + 2*x2*x5 - 3*x7*x8^2*x9 - 6*x7*x8*x10 - 3*x7*x9^2
e7 = x2*x3^2 + 2*x2*x4 - x7*x8^3 - 6*x7*x8*x9 - 3*x7*x10
e8 = -x1^2 + 2*x2*x3 - 3*x7*x8^2 - 3*x7*x9
e9 = -2*x1 + x2 - 3*x7*x8
e10 = -x7 - 1

es = [e1, e2, e3, e4, e5, e6, e7, e8, e9, e10]

sys = System(es)

sols = solve(sys)

with output:

Computing mixed cells... 23    Time: 0:00:01
  mixed_volume:  736
Tracking 736 paths... 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| Time: 0:00:10
  # paths tracked:                  736
  # non-singular solutions (real):  348 (22)
  # singular endpoints (real):      323 (32)
  # total solutions (real):         671 (54)

Have you tried monodromy solve? (Monodromy Β· HomotopyContinuation.jl) Perhaps replacing the coefficients in your system by parameters and then using monodromy solve could do the trick?

Thanks for the suggestion, I’ll look into using parameters. As it happens, the system is naturally part of a family, so I can use that one. For systems that don’t naturally belong to a family, does it work to e.g. vary a single coefficient? Or should you vary all of them independently?