NL2SOL
An Adaptive Nonlinear LeastSquares Algorithm
NL2SOL
is a FORTRAN77 library which
implements an adaptive nonlinear leastsquares 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 Newtonlike Method Based upon
Gaussian Elimination,
SIAM Journal on Numerical Analysis,
Volume 6, pages 560569, 1969.

John Dennis, David Gay, Roy Welsch,
Algorithm 573:
An Adaptive Nonlinear LeastSquares Algorithm,
ACM Transactions on Mathematical Software,
Volume 7, Number 3, 1981, pages 367383.

Philip Gill, Walter Murray,
Algorithms for the Solution of the
Nonlinear Leastsquares Problem,
SIAM Journal on Numerical Analysis,
Volume 15, Number 5, pages 977991, 1978.

Charles Lawson, Richard Hanson,
Solving Least Squares Problems,
PrenticeHall.
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 leastsquares) 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 pvectors x and y.

DUPDAT updates the scale vector D for NL2ITR.

GQTSTP computes the GoldfeldQuandtTrotter step by MoreHebden 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 LevenbergMarquardt step using MoreHebden 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