hello,
I have probably finished all the fsolve improvements I intended to do
for 3.2. I intend to do some extensive testing in the weeks to come,
so changes may yet
be made, but the theory is all there.
Here's a summary for users interested in solving systems of
nonlinear equations:
fsolve is now an m-file function, the old minpack code is gone. thus,
fsolve can now be called recursively, and will automatically compute
in single precision if given single-precision inputs. General
rectangular systems should now be supported, solved in least-squares /
minimum-norm sense. The interface and options supported via the
optimset are mostly matlab-compatible, as well as the return values
(where applicable).
Essentially the same method as in minpack is used - double dogleg
trust region steps with Broyden updating of the jacobian. For large
enough (no. of variables > 10) square and overdetermined(!) systems,
the QR factorization of the jacobian is updated rather than the
jacobian itself, avoiding costly re-factorizations. Broyden updating
may be switched off by the user, yielding plain levenberg-marquardt
method.
To fully benefit from the efficient updating, you should link Octave
with the qrupdate library.
In particular, fsolve should now be capable of general nonlinear
fitting with expected small residuals (see the last test of fsolve).
I encourage users to test the new fsolve and report
problems/suggestions to this list.
cheers