solve method

  1. @override
({double convergence, double efficiency, List<double> guesses}) solve()
override

Generates the succession generated by the root-finding algorithm. Returns a Record object whose members are:

  • a guesses named field, which contains the list of values generated by the algorithm on each step;

  • a convergence named field, whose value represents the convergence rate for the generated succession (computed using convergence).

  • a efficiency named field, whose value represents the efficiency of the algorithm (computed using efficiency).

Implementation

@override
({List<double> guesses, double convergence, double efficiency}) solve() {
  var amp = tolerance + 1;
  var n = 1;
  final guesses = <double>[];
  var pA = a;
  var pB = b;
  var fa = evaluateOn(pA);

  while ((amp >= tolerance) && (n <= maxSteps)) {
    ++n;
    amp = (pB - pA).abs();
    final x0 = pA + amp * 0.5;

    guesses.add(x0);
    final fx = evaluateOn(x0);

    if (fa * fx < 0) {
      pB = x0;
    } else {
      if (fa * fx > 0) {
        pA = x0;
        fa = fx;
      } else {
        amp = 0;
      }
    }
  }

  return (
    guesses: guesses,
    convergence: convergence(guesses, maxSteps),
    efficiency: efficiency(guesses, maxSteps),
  );
}