#### Previous topic

scipy.optimize.root

#### Next topic

scipy.optimize.broyden1

# scipy.optimize.fsolve

`scipy.optimize.``fsolve`(func, x0, args=(), fprime=None, full_output=0, col_deriv=0, xtol=1.49012e-08, maxfev=0, band=None, epsfcn=None, factor=100, diag=None)

  Find the roots of a function.

  Return the roots of the (non-linear) equations defined by `func(x) = 0` given a starting estimate.

  Parameters:

  func : callable `f(x, *args)`

  > A function that takes at least one (possibly vector) argument.

  x0 : ndarray

  > The starting estimate for the roots of `func(x) = 0`.

  args : tuple, optional

  > Any extra arguments to func.

  fprime : callable(x), optional

  > A function to compute the Jacobian of func with derivatives across the rows. By default, the Jacobian will be estimated.

  full_output : bool, optional

  > If True, return optional outputs.

  col_deriv : bool, optional

  > Specify whether the Jacobian function computes derivatives down the columns (faster, because there is no transpose operation).

  xtol : float, optional

  > The calculation will terminate if the relative error between two consecutive iterates is at most xtol.

  maxfev : int, optional

  > The maximum number of calls to the function. If zero, then `100*(N+1)` is the maximum where N is the number of elements in x0.

  band : tuple, optional

  > If set to a two-sequence containing the number of sub- and super-diagonals within the band of the Jacobi matrix, the Jacobi matrix is considered banded (only for `fprime=None`).

  epsfcn : float, optional

  > A suitable step length for the forward-difference approximation of the Jacobian (for `fprime=None`). If epsfcn is less than the machine precision, it is assumed that the relative errors in the functions are of the order of the machine precision.

  factor : float, optional

  > A parameter determining the initial step bound (`factor * || diag * x||`). Should be in the interval `(0.1, 100)`.

  diag : sequence, optional

  > N positive entries that serve as a scale factors for the variables.

  Returns:

  x : ndarray

  > The solution (or the result of the last iteration for an unsuccessful call).

  infodict : dict

  > A dictionary of optional outputs with the keys:

  > `nfev`

  >   number of function calls

  > `njev`

  >   number of Jacobian calls

  > `fvec`

  >   function evaluated at the output

  > `fjac`

  >   the orthogonal matrix, q, produced by the QR factorization of the final approximate Jacobian matrix, stored column wise

  > `r`

  >   upper triangular matrix produced by QR factorization of the same matrix

  > `qtf`

  >   the vector `(transpose(q) * fvec)`

  ier : int

  > An integer flag. Set to 1 if a solution was found, otherwise refer to mesg for more information.

  mesg : str

  > If no solution is found, mesg details the cause of failure.

  See also

  `root`
    Interface to root finding algorithms for multivariate

  `functions.`

  Notes

  `fsolve` is a wrapper around MINPACK’s hybrd and hybrj algorithms.