MINPACK
Least Squares Minimization of Vector Functions


MINPACK, a FORTRAN90 code which solves systems of nonlinear equations, or carries out the least squares minimization of the residual of a set of linear or nonlinear equations, by Jorge More, Danny Sorenson, Burton Garbow, Kenneth Hillstrom.

MINPACK includes software for solving nonlinear equations and nonlinear least squares problems. Five algorithmic paths each include a core subroutine and an easy-to-use driver. The algorithms proceed either from an analytic specification of the Jacobian matrix or directly from the problem functions. The paths include facilities for systems of equations with a banded Jacobian matrix, for least squares problems with a large amount of data, and for checking the consistency of the Jacobian matrix with the functions.

Given a set of N nonlinear equations in N unknowns, F(X) = 0, Powell's method is used to seek a solution X.

Given a set of M nonlinear functions in N unknowns, F(X), the Levenberg-Marquardt method is used to seek an X which minimizes the L2 norm of the residual ||F(X)||.

The user supplies a subroutine to evaluate the nonlinear function; the jacobian matrix dFi(X)/dXj may also be supplied by the user in a subroutine, or approximated by finite differences.

The original FORTRAN77 version of MINPACK is available through the NETLIB web site.

License:

Minpack Copyright Notice (1999) University of Chicago.  All rights reserved

Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the
following conditions are met:

1. Redistributions of source code must retain the above
copyright notice, this list of conditions and the following
disclaimer.

2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials
provided with the distribution.

3. The end-user documentation included with the
redistribution, if any, must include the following
acknowledgment:

   "This product includes software developed by the
   University of Chicago, as Operator of Argonne National
   Laboratory.

Alternately, this acknowledgment may appear in the software
itself, if and wherever such third-party acknowledgments
normally appear.

4. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS"
WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE
UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND
THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE
OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY
OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF
THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4)
DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION
UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL
BE CORRECTED.

5. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT
HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF
ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT,
INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF
ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF
PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER
SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT
(INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,
EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
POSSIBILITY OF SUCH LOSS OR DAMAGES.    

Languages:

minpack is available in a C version and a C++ version and a FORTRAN90 version.

Related Data and Programs:

bvls, a FORTRAN90 code which applies least squares methods to solve a linear system for which lower and upper constraints may have been placed on every variable.

fsolve, a FORTRAN90 code which solves systems of nonlinear equations, inspired by the fsolve() function in MATLAB, and based on the minpack() minimization package.

geqp3, a FORTRAN90 code which contains the portion of the LAPACK library that carries out the QR factorization, with column pivoting, of an M by N rectangular matrix, with N <= M.

minpack_test

nl2sol, a FORTRAN90 code which implements an adaptive nonlinear least-squares algorithm.

nms, a FORTRAN90 code which includes a wide variety of numerical software, including solvers for linear systems of equations, interpolation of data, numerical quadrature, linear least squares data fitting, the solution of nonlinear equations, ordinary differential equations, optimization and nonlinear least squares, simulation and random numbers, trigonometric approximation and Fast Fourier Transforms.

praxis, a FORTRAN90 code which minimizes a scalar function of several variables.

qr_solve, a FORTRAN90 code which computes the least squares solution of a linear system A*x=b.

test_lls, a FORTRAN90 code which implements linear least squares (LLS) test problems which are given A and b, and seek a vector x which minimizes the L2 norm of the error ||Ax-b||.

test_opt, a FORTRAN90 code which defines test problems for the minimization of a scalar function of several variables.

test_optimization, a FORTRAN90 code which defines test problems for the minimization of a scalar function of several variables, as described by Molga and Smutnicki.

toms61, a FORTRAN90 code which seeks the minimizer of a scalar functional of multiple variables.

Author:

Original FORTRAN77 version by Jorge More, Danny Sorenson, Burton Garbow, Kenneth Hillstrom. FORTRAN90 version by John Burkardt.

Reference:

  1. Jorge More, Burton Garbow, Kenneth Hillstrom,
    User Guide for MINPACK-1,
    Technical Report ANL-80-74,
    Argonne National Laboratory, 1980.
  2. Jorge More, Danny Sorenson, Burton Garbow, Kenneth Hillstrom,
    The MINPACK Project,
    in Sources and Development of Mathematical Software,
    edited by Wayne Cowell,
    Prentice-Hall, 1984,
    ISBN: 0-13-823501-5,
    LC: QA76.95.S68.

Source Code:


Last revised on 04 September 2020.