Sampling Polynomial Systems
In this Julia package we deal with parametric polynomial systems with finitely many solutions for generic parameters. We use HomotopyContinuation.jl to sample such polynomial systems.
Run monodromy
DecomposingPolynomialSystems.run_monodromy — Function
run_monodromy(F::ParametricSystem, start_points=nothing; options...) -> SampledParametricSystemRuns monodromy_solve on a given polynomial system F with starting solutions start_points[1] and parameters start_points[2] (if given).
julia> @var x a b;
julia> F = ParametricSystem([x^3+a*x+b]; unknowns=[x], parameters=[a,b]);
julia> F = run_monodromy(F, ([[1]], [1,-2]); max_loops_no_progress = 10)
SampledParametricSystem with 3 samples
1 unknown: x
2 parameters: a, b
number of solutions: 3
sampled instances: 1run_monodromy(F::SampledParametricSystem, start_points=nothing; options...) -> SampledParametricSystemReruns monodromy_solve on a given sampled polynomial system F.
SampledParametricSystem
SampledParametricSystem is a struct type that initially contains a polynomial system, the result of monodromy computations, and the solutions-parameters samples obtained with run_monodromy or sample!.
DecomposingPolynomialSystems.unknowns — Function
unknowns(F::SampledParametricSystem) -> Vector{Variable}Returns the vector of unknowns of F.
DecomposingPolynomialSystems.parameters — Function
parameters(F::SampledParametricSystem) -> Vector{Variable}Returns the vector of parameters of F.
DecomposingPolynomialSystems.variables — Function
variables(F::SampledParametricSystem) -> Vector{Variable}Returns the concatenated vector of unknowns and parameters of F.
DecomposingPolynomialSystems.nunknowns — Function
nunknowns(F::SampledParametricSystem) -> IntReturns the number of unknowns of F.
DecomposingPolynomialSystems.nparameters — Function
nparameters(F::SampledParametricSystem) -> IntReturns the number of parameters of F.
DecomposingPolynomialSystems.nvariables — Function
nvariables(F::SampledParametricSystem) -> IntReturns the number of variables of F.
DecomposingPolynomialSystems.nsolutions — Function
nsolutions(F::SampledParametricSystem) -> IntReturns the number of solutions of F obtained by run_monodromy method.
DecomposingPolynomialSystems.samples — Function
samples(F::SampledParametricSystem) -> Dict{Vector{Int}, Samples}Returns the dictionary of samples of a polynomial system F.
DecomposingPolynomialSystems.ninstances — Function
ninstances(F::SampledParametricSystem) -> IntReturns the number of sampled instances of F.
DecomposingPolynomialSystems.nsamples — Function
nsamples(F::SampledParametricSystem) -> IntReturns the number of samples of F. Notice that ninstances(F)*nsolutions(F) doesn't have to be equal to nsamples(F).
DecomposingPolynomialSystems.monodromy_permutations — Function
monodromy_permutations(F::SampledParametricSystem) -> Vector{Vector{Int}}Returns the vector of monodromy permutations of F obtained by run_monodromy.
DecomposingPolynomialSystems.block_partitions — Function
block_partitions(F::SampledParametricSystem) -> Vector{Vector{Vector{Int}}}Returns the vector of all block partitions of the solutions of F.
DecomposingPolynomialSystems.aut_permutations — Function
aut_permutations(F::SampledParametricSystem) -> Vector{Vector{Int}}Returns the vector of automorphism permutations of the solutions (actions of automorphisms on the solutions) of F.
Sample system
DecomposingPolynomialSystems.sample! — Function
sample!(F::SampledParametricSystem; path_ids=Vector(1:nsolutions(F)), n_instances=1) -> SampledParametricSystemUses solve method to track the solutions of a poynomial system F with ids defined by path_ids to n_instances random parameters.