broyden1#
- scipy.optimize.broyden1(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)#
- Find a root of a function, using Broyden’s first Jacobian approximation. - This method is also known as “Broyden’s good method”. - Parameters:
- Ffunction(x) -> f
- Function whose root to find; should take and return an array-like object. 
- xinarray_like
- Initial guess for the solution 
- alphafloat, optional
- Initial guess for the Jacobian is - (-1/alpha).
- reduction_methodstr or tuple, optional
- Method 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 is- max_rank - 2.
 
- max_rankint, optional
- Maximum rank for the Broyden matrix. Default is infinity (i.e., no rank reduction). 
- iterint, optional
- Number of iterations to make. If omitted (default), make as many as required to meet tolerances. 
- verbosebool, optional
- Print status to stdout on every iteration. 
- maxiterint, optional
- Maximum number of iterations to make. If more are needed to meet convergence, - NoConvergenceis raised.
- f_tolfloat, optional
- Absolute tolerance (in max-norm) for the residual. If omitted, default is 6e-6. 
- f_rtolfloat, optional
- Relative tolerance for the residual. If omitted, not used. 
- x_tolfloat, optional
- Absolute 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_rtolfloat, optional
- Relative minimum step size. If omitted, not used. 
- tol_normfunction(vector) -> scalar, optional
- Norm to use in convergence check. Default is the maximum norm. 
- line_search{None, ‘armijo’ (default), ‘wolfe’}, optional
- Which type of a line search to use to determine the step size in the direction given by the Jacobian approximation. Defaults to ‘armijo’. 
- callbackfunction, optional
- Optional callback function. It is called on every iteration as - callback(x, f)where x is the current solution and f the corresponding residual.
 
- Returns:
- solndarray
- An array (of similar array type as x0) containing the final solution. 
 
- Raises:
- NoConvergence
- When a solution was not found. 
 
 - See also - root
- Interface to root finding algorithms for multivariate functions. See - method='broyden1'in particular.
 - Notes - This algorithm implements the inverse Jacobian Quasi-Newton update \[H_+ = H + (dx - H df) dx^\dagger H / ( dx^\dagger H df)\]- which corresponds to Broyden’s first Jacobian update \[J_+ = J + (df - J dx) dx^\dagger / dx^\dagger dx\]- References [1]- B.A. van der Rotten, PhD thesis, “A limited memory Broyden method to solve high-dimensional systems of nonlinear equations”. Mathematisch Instituut, Universiteit Leiden, The Netherlands (2003). https://math.leidenuniv.nl/scripties/Rotten.pdf - Examples - The following functions define a system of nonlinear equations - >>> def fun(x): ... return [x[0] + 0.5 * (x[0] - x[1])**3 - 1.0, ... 0.5 * (x[1] - x[0])**3 + x[1]] - A solution can be obtained as follows. - >>> from scipy import optimize >>> sol = optimize.broyden1(fun, [0, 0]) >>> sol array([0.84116396, 0.15883641])