
README:

In the form of a class named NonlinearLeastSquares, this
module provides a domain agnostic implementation of
nonlinear least-squares algorithms (gradient-descent and
Levenberg-Marquardt) for fitting a model to observed data.
Typically, the model involves several parameters and each
observed data element can be expressed as a function of
those parameters plus noise.  The goal of nonlinear
least-squares is to estimate the best values for the
parameters involved given all of the observed data.  In
order to illustrate how to use the NonlinearLeastSquares
class, the module also comes with another class,
OptimizeSurfaceFit, whose job is to fit the best surface to
noisy height data over an XY-plane. The model in this case
would be an analytical expression for the height surface and
the goal of nonlinear least-squares would be to estimate the
best values for the parameters in the model.

If there are any questions about this module, contact the
author at 'kak@purdue.edu' with the string
NonlinearLeastSquares in the subject line to get past his
spam filter.
