solve method

  1. @override
NonlinearResults solve()
override

Returns a NonlinearResults object which contains the data calculated by the root-finding algorithm.

Implementation

@override
NonlinearResults 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 NonlinearResults(
    guesses: guesses,
    convergence: convergence(guesses, maxSteps),
    efficiency: efficiency(guesses, maxSteps),
  );
}