solve method
Returns a NonlinearResults object which contains the data calculated by the root-finding algorithm.
Implementation
@override
NonlinearResults solve() {
final guesses = <double>[];
var n = 1;
var x0 = (a * evaluateOn(b) - b * evaluateOn(a)) /
(evaluateOn(b) - evaluateOn(a));
var diff = evaluateOn(x0).abs();
while ((diff >= tolerance) && (n <= maxSteps)) {
final fa = evaluateOn(a);
final fx = evaluateOn(x0);
if (fa * fx < 0) {
x0 = (x0 * fa - a * fx) / (fa - fx);
} else {
final fb = evaluateOn(b);
x0 = (x0 * fb - b * fx) / (fb - fx);
}
guesses.add(x0);
diff = fx.abs();
++n;
}
return NonlinearResults(
guesses: guesses,
convergence: convergence(guesses, maxSteps),
efficiency: efficiency(guesses, maxSteps),
);
}