SciPy

This is documentation for an old release of SciPy (version 0.13.0). Read this page in the documentation of the latest stable release (version 1.15.1).

Optimization and root finding (scipy.optimize)

Optimization

General-purpose

minimize(fun, x0[, args, method, jac, hess, ...]) Minimization of scalar function of one or more variables.
fmin(func, x0[, args, xtol, ftol, maxiter, ...]) Minimize a function using the downhill simplex algorithm.
fmin_powell(func, x0[, args, xtol, ftol, ...]) Minimize a function using modified Powell’s method. This method
fmin_cg(f, x0[, fprime, args, gtol, norm, ...]) Minimize a function using a nonlinear conjugate gradient algorithm.
fmin_bfgs(f, x0[, fprime, args, gtol, norm, ...]) Minimize a function using the BFGS algorithm.
fmin_ncg(f, x0, fprime[, fhess_p, fhess, ...]) Unconstrained minimization of a function using the Newton-CG method.
leastsq(func, x0[, args, Dfun, full_output, ...]) Minimize the sum of squares of a set of equations.

Constrained (multivariate)

fmin_l_bfgs_b(func, x0[, fprime, args, ...]) Minimize a function func using the L-BFGS-B algorithm.
fmin_tnc(func, x0[, fprime, args, ...]) Minimize a function with variables subject to bounds, using
fmin_cobyla(func, x0, cons[, args, ...]) Minimize a function using the Constrained Optimization BY Linear
fmin_slsqp(func, x0[, eqcons, f_eqcons, ...]) Minimize a function using Sequential Least SQuares Programming
nnls(A, b) Solve argmin_x || Ax - b ||_2 for x>=0. This is a wrapper

Global

anneal(func, x0[, args, schedule, ...]) Minimize a function using simulated annealing.
basinhopping(func, x0[, niter, T, stepsize, ...]) Find the global minimum of a function using the basin-hopping algorithm ..
brute(func, ranges[, args, Ns, full_output, ...]) Minimize a function over a given range by brute force.

Scalar function minimizers

minimize_scalar(fun[, bracket, bounds, ...]) Minimization of scalar function of one variable.
fminbound(func, x1, x2[, args, xtol, ...]) Bounded minimization for scalar functions.
brent(func[, args, brack, tol, full_output, ...]) Given a function of one-variable and a possible bracketing interval, return the minimum of the function isolated to a fractional precision of tol.
golden(func[, args, brack, tol, full_output]) Return the minimum of a function of one variable.
bracket(func[, xa, xb, args, grow_limit, ...]) Bracket the minimum of the function.

Rosenbrock function

rosen(x) The Rosenbrock function.
rosen_der(x) The derivative (i.e.
rosen_hess(x) The Hessian matrix of the Rosenbrock function.
rosen_hess_prod(x, p) Product of the Hessian matrix of the Rosenbrock function with a vector.

Fitting

curve_fit(f, xdata, ydata[, p0, sigma]) Use non-linear least squares to fit a function, f, to data.

Root finding

Scalar functions

brentq(f, a, b[, args, xtol, rtol, maxiter, ...]) Find a root of a function in given interval.
brenth(f, a, b[, args, xtol, rtol, maxiter, ...]) Find root of f in [a,b].
ridder(f, a, b[, args, xtol, rtol, maxiter, ...]) Find a root of a function in an interval.
bisect(f, a, b[, args, xtol, rtol, maxiter, ...]) Find root of a function within an interval.
newton(func, x0[, fprime, args, tol, ...]) Find a zero using the Newton-Raphson or secant method.

Fixed point finding:

fixed_point(func, x0[, args, xtol, maxiter]) Find a fixed point of the function.

Multidimensional

General nonlinear solvers:

root(fun, x0[, args, method, jac, tol, ...]) Find a root of a vector function.
fsolve(func, x0[, args, fprime, ...]) Find the roots of a function.
broyden1(F, xin[, iter, alpha, ...]) Find a root of a function, using Broyden’s first Jacobian approximation.
broyden2(F, xin[, iter, alpha, ...]) Find a root of a function, using Broyden’s second Jacobian approximation.

Large-scale nonlinear solvers:

newton_krylov(F, xin[, iter, rdiff, method, ...]) Find a root of a function, using Krylov approximation for inverse Jacobian.
anderson(F, xin[, iter, alpha, w0, M, ...]) Find a root of a function, using (extended) Anderson mixing.

Simple iterations:

excitingmixing(F, xin[, iter, alpha, ...]) Find a root of a function, using a tuned diagonal Jacobian approximation.
linearmixing(F, xin[, iter, alpha, verbose, ...]) Find a root of a function, using a scalar Jacobian approximation.
diagbroyden(F, xin[, iter, alpha, verbose, ...]) Find a root of a function, using diagonal Broyden Jacobian approximation.

Additional information on the nonlinear solvers

Utility Functions

line_search(f, myfprime, xk, pk[, gfk, ...]) Find alpha that satisfies strong Wolfe conditions.
check_grad(func, grad, x0, *args) Check the correctness of a gradient function by comparing it against a (forward) finite-difference approximation of the gradient.
show_options(solver[, method]) Show documentation for additional options of optimization solvers.