Numerical Trace

The following lower-level calls expose the intermediate HomotopyContinuation.jl objects and numerical trace used by certify_posteriori. This is mostly useful for debugging or inspecting what is being certified.

julia> @variables x y;
julia> CC = AcbField(128);
julia> F = [x^2 + 3*y - 4, y^2 + 3];
julia> G = [x^2 - 1, y^2 - 1];
julia> H = straight_line_homotopy(F, G, [x, y]; CCRing=CC, gamma=CC(0.5, 0.5));Compilation Done.
julia> tracker = prepare_posteriori_tracker(H);
julia> H_hc = posteriori_hc_homotopy(tracker);
julia> trace = collect_hc_trace(H_hc, ComplexF64[1, -1]; t_start=0.0, t_target=1.0);
julia> trace.successtrue
julia> trace.statussuccess::codes = 1
julia> trace.accepted_steps9
julia> trace.rejected_steps0
julia> length(trace.trace)10
julia> trace.trace[1](t = 0.0, x = ComplexF64[1.0 + 0.0im, -1.0 + 0.0im])
julia> trace.trace[end](t = 1.0, x = ComplexF64[2.2975463569101278 + 1.1308046967319336im, 0.0 - 1.7320508075688772im])
CertifiedHomotopyTracking.posteriori_hc_systemFunction
posteriori_hc_system(tracker::PosterioriTracker)

Return a reconstructed HomotopyContinuation.jl System for an edge homotopy source.

This is an HC.jl System, not a CHT SpecializedHomotopy. It is only defined for parameter/edge homotopies; direct homotopies reconstruct directly as HomotopyContinuation.jl Homotopy objects.

source
CertifiedHomotopyTracking.posteriori_hc_homotopyFunction
posteriori_hc_homotopy(tracker; kwargs...)

Return a HomotopyContinuation.jl homotopy reconstructed from tracker.

For direct homotopies this returns the reconstructed HC.jl Homotopy. For parameter/edge homotopies it combines the reconstructed HC.jl System with the stored start and target parameter values and returns an HC.jl parameter homotopy.

Options

  • start_parameters, target_parameters: parameter endpoint values for edge sources. If tracker was prepared from a SpecializedHomotopy, these default to the system's stored p_start and p_end.
  • const_parameters=ComplexF64[]: fixed constants for edge sources.
  • parameter_values=nothing: fixed parameter vector for direct homotopies.
source
CertifiedHomotopyTracking.collect_hc_traceFunction
collect_hc_trace(H, x_start; kwargs...)

Collect a numerical trace along one HomotopyContinuation.jl homotopy path using the low-level Tracker iterator API.

The returned points are the numerical approximations produced by HC.jl at the start and at accepted tracker steps. They are not certified points, and this function does not perform interval, Krawczyk, or a posteriori certification.

Keyword arguments are passed into HomotopyContinuation.TrackerOptions where applicable:

  • t_start = 1.0, t_target = 0.0: tracking direction.
  • parameters = :default: use HomotopyContinuation.jl's default parameter handling for the reconstructed homotopy. For parameterized HC.jl systems this may be replaced with an explicit parameter value object accepted by HC.jl.
  • max_steps = 10_000
  • max_step_size = Inf: do not impose an extra cap on HC.jl's adaptive step size. Give a positive finite value to force a denser trace.
  • throw_on_failure = false: throw an ErrorException if HC.jl does not report success.

Returns a named tuple (trace, status, success, accepted_steps, rejected_steps), where trace is a vector of named tuples (t = ..., x = ...).

Example

@variables x y;
CC = AcbField(128);
F = [x^2 + 3*y - 4, y^2 + 3];
G = [x^2 - 1, y^2 - 1];
H = straight_line_homotopy(F, G, [x, y]; CCRing=CC, gamma=CC(0.5, 0.5));
tracker = prepare_posteriori_tracker(H);
H_hc = posteriori_hc_homotopy(tracker);
trace = collect_hc_trace(H_hc, ComplexF64[1, -1]; t_start=0.0, t_target=1.0);

trace.success
length(trace.trace)
source