This web site offers
a free state-of-the-art C++ library (in a file called autoreg.h)
for solving dense linear equation systems. Similar algorithms are available for
Python at the same address above.

We assume you would not be here if your problem were easy. So we focus on algorithms that solve the hardest linear equation systems. Easier problems are of course handled easily. These solvers handle any shape or size of matrix, and handle inherent difficulties such as noisy data, dependencies between rows, singularity of nearly any sort, and ill-conditioning/ instability. The automatic algorithms are based on detailed analysis of the Picard_Condition. Note that these algorithms are, in part, based on heuristics and estimates which may sometimes not produce results of the quality you need. We would love to see such problems that are not well solved so we can further improve our codes. However, they have already seen years of use in many contexts.

Autoreg.h
contains a very extensive set of operations for Matrix, Vector, Row, and
Diagonal objects. Our solvers are implemented using these classes, as well as
matrix decomposition routines from a trusted source. But you** do not **have
to know about or care about these C++ classes if you not interested.

We assume you want to solve a linear matrix equation, also known as a matrix problem, like this:

A*x = b

where A has m rows and n columns, and the right hand side column, b, also has m rows. You may also have extra equations that express constraints such as x[3] > 0, or “the sum of the solution must be 100.” These can also be handled.

Here is an example of how to call our premier solver, autoreg(), directly from a C++ program with no use of our Matrix classes:

You may also call our non-negatively constrained solver directly from C++. Just change the name “autoreg” to “autoregnn”.

Here is an example of how to call our premier solver, autoreg(), with minimal use of our Matrix classes:

Here is an example of how can call our premier solver, autoreg(), with full use of our Matrix classes:

Here is the autoreg.h library for you to download.

Our three main solvers are:

**autoreg****(A,b) **for
automatically solved problems of any size, shape, or level of simplicity or
difficulty.

**autoregnn****(A,b) **for the same algorithm constrained to force
the solution to be non-negative.

**autoreg3(A,b,E,f,G,h) **to constrain the solution with any
number of exact equality requirements, E*x==f, plus any number of “greater than
or equal to” constraints, G*x >= h. (If you need “less than or equal to”
constraints, just multiply both sides of your equation by -1.0, and it becomes
a “greater than or equal to”
constraint.)

Here is a summary Guide to all the operations available to you

if you choose to use our Matrix, Vector, Row, and Diagonal classes. Note: This documentation is actually an executable C++ program! Download this Guide and the autoreg,h source and try it!

Example solved problems for students:

Garden Fertilizer Calculation

A Problem from Oil-Well Logging

A Problem with Stucco color

Solving Equations to Play MineSweeper

For an introduction to the
difficulties that come up in solving linear equation systems click here.

For tutorials on matrix
problems click here.

For technical references click here.

Note:
This software is provided AS IS, with no
warranty of any sort whatsoever. The user must determine if the results of any
calculation using any of this software are appropriate for the user's purposes.
Some algorithms contained herein are heuristic and/or experimental. All this
software inevitably contains bugs/errors which are as yet unknown, as well as
know deficiencies.

This software is offered by:

By Rondall E.
Jones, Ph.D.

Dissertation: *Solving
Linear Algebraic Systems Arising in the Solution of Integral Equations of the
First Kind, *University of New Mexico, 1985

Advisor:
Cleve B. Moler, creator of MATLAB and co-founder
of MathWorks

Career:
Sandia Laboratories, Albuquerque, New Mexico, 1967-2011

Publications:
Please Google “Rondall Jones Sandia” and ignore results not containing the
exact spelling of “Rondall”

To contact the author email rejones7@msn.com.