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
— TypeAbstractPathTracker
Supertype 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 pointt
in time where the endgame starts. Set it to0.0
to disable the endgame.only_nonsingular = false
: Iftrue
don'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).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 the accuracy number above 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_scaling
for 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
.