convergence method

double convergence(
  1. List<double> guesses,
  2. int steps
)

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;
}