NL2SOL An Adaptive Nonlinear Least-Squares Algorithm

NL2SOL is a FORTRAN77 library which implements an adaptive nonlinear least-squares algorithm, by John Dennis, David Gay, Roy Welsch.

NL2SOL assumes that there are NVAR variables X, and MEQN nonlinear "residual functions" F(X), and that the task is to find a solution X which minimizes the Euclidean norm of ||F(X)||.

NL2SOL is ACM TOMS algorithm 573. The original, true, correct version of ACM TOMS 573 is available in the TOMS subdirectory of the NETLIB web site.

Languages:

NL2SOL is available in a FORTRAN77 version and a FORTRAN90 version.

Related Data and Programs:

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

COMPASS_SEARCH, a FORTRAN77 library which seeks the minimizer of a scalar function of several variables using compass search, a direct search algorithm that does not use derivatives.

DQED, a FORTRAN90 library which solves constrained least squares problems.

LAWSON, a FORTRAN77 library which contains routines for solving least squares problems and singular value decompositions, by Lawson and Hanson.

MACHINE, a FORTRAN77 library which supplies the value of certain machine arithmetic constants needed by NL2SOL.

MINPACK, a FORTRAN90 library which carries out the least squares minimization of the residual of a set of linear or nonlinear equations.

PRAXIS, a FORTRAN77 library which minimizes a scalar function of several variables.

TEST_OPT, a FORTRAN90 library which defines test problems requiring the minimization of a scalar function of several variables.

TOMS611, a FORTRAN90 library which can be used to seek the minimizer of a scalar functional of multiple variables.

Author:

John Dennis, David Gay, Roy Welsch

Reference:

1. Kenneth Brown,
A Quadratically Convergent Newton-like Method Based upon Gaussian Elimination,
SIAM Journal on Numerical Analysis,
Volume 6, pages 560-569, 1969.
2. John Dennis, David Gay, Roy Welsch,
Algorithm 573:
ACM Transactions on Mathematical Software,
Volume 7, Number 3, 1981, pages 367-383.
3. Philip Gill, Walter Murray,
Algorithms for the Solution of the Non-linear Least-squares Problem,
SIAM Journal on Numerical Analysis,
Volume 15, Number 5, pages 977-991, 1978.
4. Charles Lawson, Richard Hanson,
Solving Least Squares Problems,
Prentice-Hall.

Examples and Tests:

NL2SOL_PRB1 is a simple test.

NL2SOL_PRB2 is an extensive set of tests.

List of Routines:

• NL2SOL minimizes nonlinear sum of squares using analytic jacobian.
• NL2SNO is like NL2SOL, but uses a finite difference jacobian.
• NL2ITR carries out nl2sol (nonlinear least-squares) iterations.
• ASSESS assesses a candidate step.
• COVCLC computes the covariance matrix for NL2ITR.
• DFAULT supplies default values to IV and V.
• DOTPRD returns the inner product of the p-vectors x and y.
• DUPDAT updates the scale vector D for NL2ITR.
• GQTSTP computes the Goldfeld-Quandt-Trotter step by More-Hebden technique.
• ITSMRY prints an iteration summary.
• LINVRT computes the inverse of a lower triangular matrix.
• LITVMU solves L' * X = Y, where L is a lower triangular matrix.
• LIVMUL solves L * X = Y, where L is a lower triangular matrix.
• LMSTEP computes the Levenberg-Marquardt step using More-Hebden technique.
• LSQRT computes the Cholesky factor of a lower triangular matrix.
• LSVMIN estimates the smallest singular value of a lower triangular matrix.
• LTSQAR sets A to the lower triangle of L' * L.
• PARCHK checks the NL2SOL parameters.
• QAPPLY applies orthogonal transformation to the residual R.
• QRFACT computes the QR decomposition of a matrix.
• RELDST computes the relative difference between two real values.
• RPTMUL computes R * P' * X or P * R' * R * P' * X or P * R' * X.
• SLUPDT updates a symmetric matrix A so that A * STEP = Y.
• SLVMUL sets Y = S * X, where S is a P by P symmetric matrix.
• STOPX is called to stop execution.
• TIMESTAMP prints the current YMDHMS date as a time stamp.
• VAXPY sets W = A*X + Y where A is a scalar.
• VCOPY copies a vector.
• VSCOPY sets a vector to a scalar value.
• V2NORM computes the L2 norm of a vector.

You can go up one level to the FORTRAN77 source codes.

Last revised on 03 February 2008