Sampling
In this Julia package we partially deal with polynomial and rational function defined on algebraic varieties. These varieties are defined by multivariate polynomial systems. We use HomotopyContinuation.jl
to sample these algebraic varieties. The samples are later used for the interpolation.
An alternative would be that a user provides a method that will generate samples without using HomotopyContinuation. In practice it is usually possible to provide such a method, since we very often deal with structured polynomial systems.
AlgebraicInterpolation.reasonable_to_sample
— Functionreasonable_to_sample(X::AbstractAlgebraicVariety, vars::FixedFreeVariables; <keyword_arguments>)
Return false
if there are no constraints in free variables after fixing all the fixed ones.
AlgebraicInterpolation.possible_to_sample
— Functionpossible_to_sample(X::AbstractAlgebraicVariety, vars::FixedFreeVariables; kwargs...)
Returns false
if there exists a free variable in vars
that is determined in finite many ways by all fixed variables in vars
. Supposes that the projection to each variable is dominant.
Throws a WARNING (for keyword argument logging=true
) if there are no constraints in free variables after fixing all the fixed ones.
Keyword arguments:
tols::Tolerances=Tolerances()
: tolerances structure used for computations. Tolerances used
in this method: same as in image_dimension
.
logging::Bool=true
AlgebraicInterpolation.sample
— Functionsample(X::AbstractAlgebraicVariety, vars::FixedFreeVariables; <keyword arguments>) -> FixedFreeSamples
Returns the samples of X
in the given vars
. Results in an error, if it is impossible or unreasonable to sample the given vars
from X
.
Keyword arguments
nsamples::Integer=1
: number of samples.start_point::Union{AbstractVector, Nothing}=nothing
: starting point for homotopy continuation.tols::Tolerances=Tolerances()
: tolerances for numerical computations.
AlgebraicInterpolation.sample!
— Functionsample!(X::AbstractAlgebraicVariety, vars::FixedFreeSamples; <keyword arguments>) -> FixedFreeSamples
Samples X
in the given vars
and updates X
with these samples.
AlgebraicInterpolation.samples
— Functionsamples(X::AbstractAlgebraicVariety, vars::FixedFreeVariables) -> FixedFreeSamples
Returns the saved samples of X
in the given vars
.