EndgameTracker
EndgameTracker is a data structure to track for a given AbstractHomotopy $H(x,t)$ a solution $x$ from $t₁ > 0$ to $0$, i.e., $H(x,t₁) = 0$ and $x'$ with $H(x',0) = 0$ is returned. This is done by following an implicitly defined path $x(t)$ using Tracker. In contrast to Tracker this also has an endgame to handle diverging paths and singular solutions.
HomotopyContinuation.AbstractPathTracker — TypeAbstractPathTrackerSupertype for path trackers.
Constructor and Options
HomotopyContinuation.EndgameTracker — TypeEndgameTracker(tracker::Tracker; options = EndgameOptions())
EndgameTracker(H::AbstractHomotopy; options = EndgameOptions())A EndgameTracker combines a Tracker with an endgame. That is, while a Tracker assumes that the solution path is non-singular and convergent, the endgame allows to handle singular endpoints as well as diverging paths. To compute singular solutions the Cauchy endgame used, for divering paths a strategy based on the valuation of local Puiseux series expansion of the path is used. By convention, a EndgameTracker always tracks from $t=1$ to $t = 0$. See EndgameOptions for the possible options.
HomotopyContinuation.EndgameOptions — TypeEndgameOptions(; options...)Options controlling the behaviour of a EndgameTracker.
Options
at_infinity_check = true: Whether divering paths should be truncated.endgame_start = 0.1: The pointtin time where the endgame starts. Set it to0.0to disable the endgame.only_nonsingular = false: Iftruedon't run the Cauchy endgame to handle singular solutions.zero_is_at_infinity = false: Whether paths going to a solution where at least one coordinates is zero should also be considered diverging.
Parameters
These parameters control the behaviour during the endgame.
max_endgame_steps = 2000: The maximal number of steps performed during the endgame.max_winding_number = 6: The maximal winding number which is attempted in the Cauchy endgame.min_cond = 1e6: The minimal condition number after which an endgame strategy is considered to be applied.min_cond_growth = 1e4: The minimal condition number growth after which an endgame strategy is considered to be applied.min_coord_growth = 100: The minimal relative growth of a coordinate necessary to to be considered going to infininity (resp. zero).singular_min_accuracy = 1e-6: A solution can be treated with a singular endgame method only if itsaccuracyis below this threshold. Otherwise, the solution will either be refined or labeled as unsuccessfully terminated.val_at_infinity_tol = 1e-3: Tolerance on the valuation which has to be satisfied before a path is considered to diverge / go to infinity.val_finite_tol = 1e-3: Tolerance on the valuation which has to be satisfied before the endgame is started.sing_cond = 1e14: value for the condition number above which a solution is considered singular.sing_accuracy = 1e-12: value for theaccuracyabove which a solution is considered singular.scaling_threshold = -30.0: Row scaling of matrices is only applied to rows withe < scaling_threshold, where is the norm of the row is estimated to be2^e. Seeskeel_row_scalingfor details.refine_steps = 3: number of steps for refining solutions at the end.
Tracking
HomotopyContinuation.track — Methodtrack(endgame_tracker::EndgameTracker, x::AbstractVector, t::Real = 1.0;
path_number = nothing, debug = false)Track the given start solution x from t towards 0 using the given endgame_tracker. Returns a PathResult.
track(endgame_tracker::EndgameTracker, r::PathResult, t::Real = 1.0;
path_number = nothing, debug = false)Track solution(r) from t towards 0 using the given endgame_tracker.