Introduction
Homotopy.jl
is a package for constructing (polynomial) homotopies $H(x,t)$.
Each implemented homotopy has the same Interface so that you can switch easily between different homotopy types. Based on this interface there are also some convenient higher level constructs provided, e.g. the construction of a total degree system and its start solutions.
Example
using Homotopy
# we use an MultivariatePolynomials implementation to construct the homotopy.
import DynamicPolynomials: @polyvar
@polyvar x y z
H = StraightLineHomotopy([x + y^3, x^2*y-2y], [x^3+2, y^3+2])
# H is now StraightLineHomotopy{Int64},
# but let's assume our algorithm uses Complex128, to avoid unnecessary conversions
# it would be better to make
H = StraightLineHomotopy{Complex128}([x + y^3, x^2*y-2y], [x^3+2, y^3+2])
# we can now evaluate H
evaluate(H, rand(Complex128, 2), 0.42)
# or alternatively
H(rand(Complex128, 2), 0.42)
Homotopies
The following homotopies are implemented
Polynomial homotopies
These are subtypes of AbstractPolynomialHomotopy
StraightLineHomotopy
GammaTrickHomotopy