Interval Root-Finding Methods (Bracketing Solvers)
solve(prob::IntervalNonlinearProblem, alg; kwargs...)Solves for $f(t) = 0$ in the problem defined by prob using the algorithm alg. If no algorithm is given, a default algorithm will be chosen.
Recommended Methods
ModAB (Modified Anderson-Bjork) is the recommended method for the scalar interval root-finding problems. It combines Bisection with Anderson-Bjork steps to achieve superlinear convergence 1.7–1.8, providing optimal convergence rate for poorly behaved functions. According to our benchmarks, it outperforms the other methods in most cases.
ITP is particularly well-suited for cases where the function is smooth and well-behaved; and achieved superlinear convergence while retaining the optimal worst-case performance of the Bisection method. For more details, consult the detailed solver API docs.
Ridder is a hybrid method that uses the value of function at the midpoint of the interval to perform an exponential interpolation to the root. This gives a fast convergence with a guaranteed convergence of at most twice the number of iterations as the bisection method.
Brent is a combination of the bisection method, the secant method and inverse quadratic interpolation. At every iteration, Brent's method decides which method out of these three is likely to do best, and proceeds by doing a step according to that method. This gives a robust and fast method, which therefore enjoys considerable popularity.
Full List of Methods
BracketingNonlinearSolve.jl
These methods are automatically included as part of NonlinearSolve.jl. Though, one can use BracketingNonlinearSolve.jl directly to decrease the dependencies and improve load time.
Alefeld: A non-allocating Alefeld methodBisection: A common bisection methodBrent: A non-allocating Brent methodFalsi: A non-allocating regula falsi methodITP: A non-allocating ITP (Interpolate, Truncate & Project) methodModAB: A non-allocating Modified Anderson-Bjork's methodMuller: A non-allocating Muller's methodRidder: A non-allocating Ridder method