bisection
- sherpa.utils.bisection(fcn, xa, xb, fa=None, fb=None, args=(), maxfev=48, tol=1e-06)[source] [edit on github]
A basic root finding algorithm that uses standard bisection
Bisection is a relatively slow method for root finding, but it guaranteed to work for a continuous function with a root in a bracketed interval; in other words the function must undergo a sign change between the bracketing values.
See https://en.wikipedia.org/wiki/Bisection_method for a description of the bisection method.
- Parameters:
- fcn
callable() The function with a root. The function signature is
fcn(x, *args).- xa
float Lower limit of the bracketing interval
- xb
float Upper limit of the bracketing interval
- fa
floatorNone Function value at
xa. This parameter is optional and can be passed to save time in cases wherefcn(xa, *args)is already known and function evaluation takes a long time. IfNone, it will be calculated.- fb
floatorNone Function value at
xb. This parameter is optional and can be passed to save time in cases wherefcn(xb, *args)is already known and function evaluation takes a long time. IfNone, it will be calculated.- args
tuple Additional parameters that will be passed through to
fcn.- maxfev
int Maximal number of function evaluations
- tol
float The root finding algorithm stops if a value x with
abs(fcn(x)) < tolis found.
- fcn
- Returns:
- out
list The output has the form of a list:
[[x, fcn(x)], [x1, fcn(x1)], [x2, fcn(x2)], nfev]wherexis the location of the root, andx1andx2are the previous steps. The function value for those steps is returned as well.nfevis the total number of function evaluations. If any of those values is not available,Nonewill be returned instead.
- out