# Nonlinear Algorithms and Software

[ Up ] [ Nonlinear ] [ Linear ] [ Integration ] [ Roots ] [ XBCD_Math ] [ Parsers ]

A variety of nonlinear solvers can be found on this website. Some are
ported from FORTRAN to C, e.g. from MINPACK, and others have been custom written
for
some special benefit -- generally performance.

## Ports of Polynomial Root Finders

### Jenkins-Traub Method

This port of the Jenkins-Traub
method to C++ language can also be downloaded from other pages on this web site. A
link is included here for convenience.

### Bairstow's Method

This method for finding real and complex roots of real
polynomials is particularly well suited for engineering applications. In those
applications, the problem of roots with high multiplicity rarely arise. Since
the method involves reduction of the polynomial to quadratic factors, it can be
implemented without the need for complex math support. (Complex roots appear in
conjugate pairs, and the corresponding quadratic has real coefficients.)A simple
DOS application for finding all roots of polynomials with real coefficients based on Bairstow's method
is available for download here.

## Original C/C++ Code

### Newton's Method for Nonlinear Systems of Equations

This archive contains nonlinear
Newton solvers for equations involving double precision numeric types. The
archive includes a set of solvers with different features, a linear solver using
Gaussian elimination and a header file. Here is
a complex version.

### Nonlinear Least Squares Solver

This archive includes a
nonlinear least squares solver used for parameter estimation. It takes a target
function (model), a vector of parameter estimates, and returns a vector of
parameters giving the best fit in a least squares sense. A complex
version is also available.

### Broyden's Method

Broyden's method is a robust alternative to Newton's method for
solving systems of nonlinear equations. A C version of Broyden's method is
available on this site. The 'zip' archive includes the
Broyden solver, a supporting Gaussian elimination linear solver, and a simple
test program.

A complex version of Broyden's method
has also been created. Complex Broyden solvers appear to be fairly rare, as I have been unable to find
any other versions elsewhere. This archive includes the complex Broyden solver,
a supporting complex Gaussian elimination linear solver, and a simple test
program.

### Polynomial Roots

A separate page devoted to polynomial root finding can be
reached from the navigation bar above or here.