Path Tracking
The certified tracking implementation follows Krawczyk-based homotopy tracking ideas from [DL24, GL24].
Basic Usage
julia> @variables x y;julia> CC = AcbField(256);julia> F = [x^2 + 3y - 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> res = track_path(H, [CC(1), CC(-1)]; show_progress=false)TrackResult(success, status=success, iterations=19, accepted=19, rejected=17, final_radius=0.08388608, precision=53->53, final_krawczyk_norm=0.6637106351554394, approx=ComplexF64[2.29754636 + 1.1308047im, -0.0 - 1.73205081im])julia> success(res)truejulia> solution(res)2-element Vector{ComplexF64}: 2.297546356910025 + 1.130804696731974im -6.455301105644087e-16 - 1.7320508075688894imjulia> evaluate_H(H, certified_region(res), CC(1))2-element Vector{AcbFieldElem}: -[5.64904665864591492734298534814525665370376083406671677278332310834230156615376e-13 +/- 4.73e-91] - [8.26199768032912061040426643556365540610622279953448310330088588671060279011726e-14 +/- 3.80e-92]*im -[4.19575535858305058121681790752147301909618935626991180088611749989272536376263e-14 +/- 4.98e-92] + [2.23618189862623717062326312022523248333330021278306355042698843852656608944054e-15 +/- 4.84e-93]*im
CertifiedHomotopyTracking.track_path — Function
track_path(sys::SpecializedHomotopy, x_start; kwargs...) -> TrackResult
track_path(compiled::CompiledHomotopy, x_start; kwargs...) -> TrackResultTrack one certified path for a specialized homotopy.
The input sys is usually produced by straight_line_homotopy for a direct homotopy, or by make_edge_system from a CompiledHomotopy created with compile_edge_homotopy. For a direct homotopy created with compile_homotopy, the compiled homotopy can be passed directly; the ACB precision is inferred from x_start.
Example
@variables x y;
CC = AcbField(256);
F = [x^2 + 3y - 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));
res = track_path(H, [CC(1), CC(-1)]; show_progress=false)
success(res)
solution(res)
evaluate_H(H, certified_region(res), CC(1))Main options
adaptive_precision=true: retry failed certified tracking at higher Arb/ACB precision.min_precision=53: first precision used when adaptive precision is enabled.max_precision=max(100_000, precision(sys.CC)): largest retry precision.precision_rejection_threshold=8: with adaptive precision enabled, retry the path at higher precision after this many consecutive rejected steps whose Krawczyk norms do not improve significantly.t_start=0.0,t_end=1.0: homotopy parameter interval.h_init=0.1: initial step size.rho=0.7: Krawczyk contraction threshold.show_progress=false: print accepted-step progress.projective=false: require projective chart tracking. This requiressysto have been compiled withprojective=true.affine_chart_atol=1e-10: threshold used when deciding whether a projective endpoint is near infinity in the original affine chart.store_boxes=:summary: use:fullto keep path boxes for later visualization.visualize=false: when notfalse, keep path boxes and optionally export a path visualization. Passtrue, a filename, or a named tuple such as(filename="path.tex", axes=(:t, 1)).visualize_options=(;): visualization/export options. See Visualization for related export helpers.filename: output filename for automatic export.axes: two or three axes. Axis entries may be:t, an integer coordinate, or(i, :real),(i, :imag),(i, :abs).show_trace: draw stored trace points when available.
Projective example
H_projective = straight_line_homotopy(F, G, [x, y]; CCRing=CC, projective=true);
res = track_path(H_projective, [CC(1), CC(-1)]; projective=true);
projective_solution(res)Visualization example
res = track_path(H, [CC(1), CC(-1)]; visualize=true);
path_boxes(res)
export_path_tikz(res, "path.tex"; axes=(:t, 1))References
- [DL24]
- T. Duff and K. Lee. Certified homotopy tracking using the Krawczyk method. In: Proceedings of the 2024 International Symposium on Symbolic and Algebraic Computation (2024); pp. 274–282.
- [GL24]
- A. Guillemot and P. Lairez. Validated numerics for algebraic path tracking. In: Proceedings of the 2024 International Symposium on Symbolic and Algebraic Computation (2024); pp. 36–45.