bundles / scipy 1.17.1 / scipy / optimize / _optimize / bracket
function
scipy.optimize._optimize:bracket
Signature
def bracket ( func , xa = 0.0 , xb = 1.0 , args = () , grow_limit = 110.0 , maxiter = 1000 ) Summary
Bracket the minimum of a function.
Extended Summary
Given a function and distinct initial points, search in the downhill direction (as defined by the initial points) and return three points that bracket the minimum of the function.
Parameters
func: callable f(x,*args)Objective function to minimize.
xa, xb: float, optionalInitial points. Defaults
xato 0.0, andxbto 1.0. A local minimum need not be contained within this interval.args: tuple, optionalAdditional arguments (if present), passed to
func.grow_limit: float, optionalMaximum grow limit. Defaults to 110.0
maxiter: int, optionalMaximum number of iterations to perform. Defaults to 1000.
Returns
xa, xb, xc: floatFinal points of the bracket.
fa, fb, fc: floatObjective function values at the bracket points.
funcalls: intNumber of function evaluations made.
Raises
: BracketErrorIf no valid bracket is found before the algorithm terminates. See notes for conditions of a valid bracket.
Notes
The algorithm attempts to find three strictly ordered points (i.e. or ) satisfying and , where one of the inequalities must be satisfied strictly and all must be finite.
Examples
This function can find a downward convex region of a function:import numpy as np import matplotlib.pyplot as plt from scipy.optimize import bracket def f(x): return 10*x**2 + 3*x + 5 x = np.linspace(-2, 2) y = f(x) init_xa, init_xb = 0.1, 1 xa, xb, xc, fa, fb, fc, funcalls = bracket(f, xa=init_xa, xb=init_xb)✓
plt.axvline(x=init_xa, color="k", linestyle="--") plt.axvline(x=init_xb, color="k", linestyle="--") plt.plot(x, y, "-k") plt.plot(xa, fa, "bx") plt.plot(xb, fb, "rx") plt.plot(xc, fc, "bx")✗
plt.show()
✓
Aliases
-
scipy.optimize.bracket