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:
-
Kenneth Brown,
A Quadratically Convergent Newton-like Method Based upon
Gaussian Elimination,
SIAM Journal on Numerical Analysis,
Volume 6, pages 560-569, 1969.
-
John Dennis, David Gay, Roy Welsch,
Algorithm 573:
An Adaptive Nonlinear Least-Squares Algorithm,
ACM Transactions on Mathematical Software,
Volume 7, Number 3, 1981, pages 367-383.
-
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.
-
Charles Lawson, Richard Hanson,
Solving Least Squares Problems,
Prentice-Hall.
Source Code:
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