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 xold = firstGuess;
var x0 = secondGuess;
var fold = evaluateOn(xold);
var fnew = evaluateOn(x0);
var diff = tolerance + 1;
while ((diff >= tolerance) && (n <= maxSteps)) {
final den = fnew - fold;
if ((den == 0) || (den.isNaN)) {
throw NonlinearException('Invalid denominator encountered. '
'The invalid value for the denominator was $den');
}
diff = -(fnew * (x0 - xold)) / den;
xold = x0;
fold = fnew;
x0 += diff;
diff = diff.abs();
++n;
guesses.add(x0);
fnew = evaluateOn(x0);
}
return NonlinearResults(
guesses: guesses,
convergence: convergence(guesses, maxSteps),
efficiency: efficiency(guesses, maxSteps),
);
}