JuliaHomotopyContinuation / HomotopyContinuation.jl

A Julia package for solving systems of polynomials via homotopy continuation.
https://www.JuliaHomotopyContinuation.org
MIT License
184 stars 30 forks source link

Fixing the bug in issue #563 #564

Closed PBrdng closed 8 months ago

PBrdng commented 8 months ago

This fixes the bug in #563.

oskarhenriksson commented 8 months ago

Thanks for fixing this so quickly!

Just out of curiosity: It seems like the proposed way to check whether a system has real coefficients is to evaluate it as a random real point and check whether the image is real. This should give the correct answer with probability 1, but I guess that it, in principle, opens up the possibility that a system is incorrectly classified as real, and that further down the line, a non-real solution incorrectly gets classified as a real as in #563?

Is there an advantage of this probabilistic approach compared to (the perhaps naive approach of) going through all coefficients and checking that they are real, via something like all(isreal,vcat(support_coefficients(F.system)[2]...)?

PBrdng commented 8 months ago

Thanks for fixing this so quickly!

Just out of curiosity: It seems like the proposed way to check whether a system has real coefficients is to evaluate it as a random real point and check whether the image is real. This should give the correct answer with probability 1, but I guess that it, in principle, opens up the possibility that a system is incorrectly classified as real, and that further down the line, a non-real solution incorrectly gets classified as a real as in #563?

Is there an advantage of this probabilistic approach compared to (the perhaps naive approach of) going through all coefficients and checking that they are real, via something like all(isreal,vcat(support_coefficients(F.system)[2]...)?

Because certify takes as input an AbstractSystem. This can be any straight-line-program. In particular, computing the coefficients can be computationally demanding.