JuliaHomotopyContinuation / HomotopyContinuation.jl

A Julia package for solving systems of polynomials via homotopy continuation.

Home Page:https://www.JuliaHomotopyContinuation.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

:invalid_startvalue on simple system

Philliams opened this issue · comments

I am attempting to use the monodromy_solve function on a complex system of polynomials of high degree, but I am obtaining the warning message Warning: None of the provided solutions is a valid start solution. from monodromy.jl:788.

I attempted to implement a very simple system to better understand how to use the monodromy_solve function, however I seem to be having getting the same error.

@var r[1:2]
@var q

f1 = r[1]^2 + r[2]^2
f2 = r[1]^2 - r[2]^2

mres = monodromy_solve(
    System([
            f1 * q,
            f2 * q
        ],
        parameters=[q]
    ),
    [0f0 ; 0f0],
    [1f0],
)

println(mres)

┌ Warning: None of the provided solutions is a valid start solution.
└ @ HomotopyContinuation ...\HomotopyContinuation\I1faM\src\monodromy.jl:788
MonodromyResult
===============
• return_code  :invalid_startvalue0 solutions
• 0 tracked loops
• random_seed  0x87e6b94c

Clearly, the starting point [0,0] is a solution given f1(0, 0) == 0 and f2(0, 0) == 0. As such, I do not understand why it is reporting that the starting point is invalid and I feel that I must be misusing the API/monodromy in a way that is not obvious to me.

Additionally, I have a version of the code working for the 1D case, but only get this error message when dealing with a multivariate system.

Versions used :

  • julia : Version 1.7.2 (2022-02-06)
  • HomotopyContinuation : 2.6.4

I think we need to improve our error messages here. For us, a valid start solution is a non-singular start solution (i.e. the Jacobian needs to have full column-rank) . However, for your system the Jacobian of [f1,f2] at (0,0) is [0 0; 0 0] and therefore the solution is considered invalid.

Thanks for the clarification, was able to debug and fix my code based on that.