bundles / scipy 1.17.1 / scipy / optimize / _nonlin / broyden2
function
scipy.optimize._nonlin:broyden2
Signature
def broyden2 ( F , xin , iter = None , alpha = None , reduction_method = restart , max_rank = None , verbose = False , maxiter = None , f_tol = None , f_rtol = None , x_tol = None , x_rtol = None , tol_norm = None , line_search = armijo , callback = None , ** kw ) Summary
Find a root of a function, using Broyden's second Jacobian approximation.
Extended Summary
This method is also known as "Broyden's bad method".
Parameters
F: function(x) -> fFunction whose root to find; should take and return an array-like object.
xin: array_likeInitial guess for the solution
alpha: float, optionalInitial guess for the Jacobian is
(-1/alpha).reduction_method: str or tuple, optionalMethod used in ensuring that the rank of the Broyden matrix stays low. Can either be a string giving the name of the method, or a tuple of the form
(method, param1, param2, ...)that gives the name of the method and values for additional parameters.Methods available:
restart: drop all matrix columns. Has no extra parameters.simple: drop oldest matrix column. Has no extra parameters.svd: keep only the most significant SVD components. Takes an extra parameter,to_retain, which determines the number of SVD components to retain when rank reduction is done. Default ismax_rank - 2.
max_rank: int, optionalMaximum rank for the Broyden matrix. Default is infinity (i.e., no rank reduction).
iter: int, optionalNumber of iterations to make. If omitted (default), make as many as required to meet tolerances.
verbose: bool, optionalPrint status to stdout on every iteration.
maxiter: int, optionalMaximum number of iterations to make. If more are needed to meet convergence, NoConvergence is raised.
f_tol: float, optionalAbsolute tolerance (in max-norm) for the residual. If omitted, default is 6e-6.
f_rtol: float, optionalRelative tolerance for the residual. If omitted, not used.
x_tol: float, optionalAbsolute minimum step size, as determined from the Jacobian approximation. If the step size is smaller than this, optimization is terminated as successful. If omitted, not used.
x_rtol: float, optionalRelative minimum step size. If omitted, not used.
tol_norm: function(vector) -> scalar, optionalNorm to use in convergence check. Default is the maximum norm.
line_search: {None, 'armijo' (default), 'wolfe'}, optionalWhich type of a line search to use to determine the step size in the direction given by the Jacobian approximation. Defaults to 'armijo'.
callback: function, optionalOptional callback function. It is called on every iteration as
callback(x, f)wherexis the current solution andfthe corresponding residual.
Returns
sol: ndarrayAn array (of similar array type as
x0) containing the final solution.
Raises
: NoConvergenceWhen a solution was not found.
Notes
This algorithm implements the inverse Jacobian Quasi-Newton update
corresponding to Broyden's second method.
Examples
The following functions define a system of nonlinear equationsdef fun(x): return [x[0] + 0.5 * (x[0] - x[1])**3 - 1.0, 0.5 * (x[1] - x[0])**3 + x[1]]✓
from scipy import optimize sol = optimize.broyden2(fun, [0, 0])✓
sol
✗See also
- root
Interface to root finding algorithms for multivariate functions. See
method='broyden2'in particular.
Aliases
-
scipy.optimize.broyden2