A solver's `solve(A, b, x)`
method computes an estimate
of the model
for the given operator and a known data vector .
To test Jag's ability to accommodate a wide variety
of application-independent solvers, we implemented six solvers:

- Steepest Descent Solver
- Conjugate Gradient Solver (for linear operators)
- Conjugate Gradient Solver with pre-conditioning
- Conjugate Gradient Solver for nonlinear functionals
- Simplex Solver
- Simulated Annealing Solver

We additionally devised a scheme that allows a programmer to supply his own report and termination methods to an iterative solver. Both methods are executed at the end of each iteration. The report method might print a statement about the state of the estimation and the termination method decides to continue the iteration or not. By supplying a report and termination method, programmer gains tight control over an iterative solver.

Finally, a *NormalEquations* class permits a programmer to
conveniently set up the normal equations for
a given minimization problem .

11/11/1997