MINPACK is a C++ library which solves systems of nonlinear equations, or carries out the least squares minimization of the residual of a set of linear or nonlinear equations.
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.
This code may freely be copied, modified, and used for any purpose.
MINPACK is available in a C++ version and a FORTRAN90 version.
LLSQ, a C++ library which solves the simple linear least squares problem of finding the formula of a straight line y=a*x+b which minimizes the root-mean-square error to a set of N data points.
QR_SOLVE, a C++ library which computes the least squares solution of a linear system A*x=b.
TEST_LS, a C++ library which implements linear least squares test problems of the form A*x=b.
You can go up one level to the C++ source codes.