Find a root of a function in given interval.
Return float, a zero of f between a and b. f must be a continuous function, and [a,b] must be a sign changing interval.
Description: Uses the classic Brent (1973) method to find a zero of the function f on the sign changing interval [a , b]. Generally considered the best of the rootfinding routines here. It is a safe version of the secant method that uses inverse quadratic extrapolation. Brent’s method combines root bracketing, interval bisection, and inverse quadratic interpolation. It is sometimes known as the van WijngaardenDekerBrent method. Brent (1973) claims convergence is guaranteed for functions computable within [a,b].
[Brent1973] provides the classic description of the algorithm. Another description can be found in a recent edition of Numerical Recipes, including [PressEtal1992]. Another description is at http://mathworld.wolfram.com/BrentsMethod.html. It should be easy to understand the algorithm just by reading our code. Our code diverges a bit from standard presentations: we choose a different formula for the extrapolation step.
Parameters:  f : function
a : number
b : number
xtol : number, optional
maxiter : number, optional
args : tuple, optional
full_output : bool, optional
disp : {True, bool} optional


Returns:  x0 : float
r : RootResults (present if full_output = True)

See also
Notes
f must be continuous. f(a) and f(b) must have opposite signs.
[Brent1973]  Brent, R. P., Algorithms for Minimization Without Derivatives. Englewood Cliffs, NJ: PrenticeHall, 1973. Ch. 34. 
[PressEtal1992]  Press, W. H.; Flannery, B. P.; Teukolsky, S. A.; and Vetterling, W. T. Numerical Recipes in FORTRAN: The Art of Scientific Computing, 2nd ed. Cambridge, England: Cambridge University Press, pp. 352355, 1992. Section 9.3: “Van WijngaardenDekkerBrent Method.” 