solve method
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 diff = tolerance + 1;
var n = 0;
var currx0 = x0;
final guesses = <double>[];
while ((diff >= tolerance) && (n < maxSteps)) {
final der = evaluateDerivativeOn(currx0);
if ((der == 0) || (der.isNaN)) {
throw NonlinearException("Couldn't evaluate f'($currx0)");
}
diff = -evaluateOn(currx0) / der;
currx0 += diff;
guesses.add(currx0);
diff = diff.abs();
++n;
}
return (
guesses: guesses,
convergence: convergence(guesses, maxSteps),
efficiency: efficiency(guesses, maxSteps),
);
}