convergence method
To get a meaningful result, it makes sense to compute the rate of
convergence only if the algorithm made at least 3 steps
(iterations).
If steps
is 2 or lower, double.nan is returned.
Implementation
double convergence(List<double> guesses, int steps) {
final size = guesses.length - 1;
if (size >= 3) {
final numerator = (guesses[size] - guesses[size - 1]).abs() /
(guesses[size - 1] - guesses[size - 2]).abs();
final denominator = (guesses[size - 1] - guesses[size - 2]).abs() /
(guesses[size - 2] - guesses[size - 3]).abs();
return math.log(numerator) / math.log(denominator);
}
return double.nan;
}