This web site offers
free state-of-the-art solvers for dense linear equation systems, for Windows
PCs.

We assume you would not be here if your problem were easy. So we focus on algorithms that solve the hardest linear
equation systems. We have many variations of the below two offerings.
Contact the author (see bottom of this page) for questions, help, or solvers
with different capabilities. We will not always be able to help, but in any event there is no charge.

The two solvers we offer below (solveLA.exe and solveLAN.exe) handle any shape or size of matrix (up to thousands of rows or columns) and handle inherent difficulties such as noisy data, dependencies between rows, singularity of nearly any sort, and most cases of ill-conditioning. Note that some heuristic algorithms are used to detect and measure ill-conditioning, and these may occasionally not work adequately. We would love to see your problems that are not well solved by these programs, so we can consider adapting the algorithms for previously unseen situations. Note: In solveLA.exe, “LA” means “Least-squares with Automatic regularization”. In solveLAN.exe, the added N refers to “Non-negative constraint”.

You are trying to solve a matrix problem,

A*x = b,

Where A has m rows and n columns, and the right hand side column, b, also has m rows.

Here is how to use our solvers:

1. Click to download solveLA.exe.

Or click to download it as solveLA.dat if your browser or antivirus refuses to download an unknown executable. You must then rename it to solveLA.exe.

One of the most common difficulties with hard matrix problems, even sometimes when solved with solveLA.exe, is instability in the solution. That is, the graph of the solution may oscillate badly, and have negative values that make no sense. If this happens to your problem, then instead:

Click to download solveLAN.exe.

Or click to download it as solveLAN.dat if your browser and antivirus refuses to download an unknown executable. You must then rename it to solveLAN.exe.

To assure yourself that nothing evil is being done, be sure to run your antivirus scanner on the executable file.

2. Put
the data for A in a file named *problem.csv.
* Arrange each row of A as a row in
the file.

Add the column of data in b as an extra column in the file. That is, insert it as if it were column n+1 in the matrix A. (see example below)

3. Add a new line at the beginning of the file with two numbers in it: m and n, the row and column sizes.

4. Put the solver program and the data file, problem.dat, in the SAME FOLDER on your PC. The Desktop is just fine for this purpose, or put them both in a separate folder made for that purpose

5. Double-click on the solver you want to use.

6. The result file will appear in a new (or changed) file named solveLA.csv or solveLAN.csv, depending on which solver you used.

Here is a tiny example:

Suppose this is your problem, with four rows and three
columns:

(Your actual matrix is probably much larger than
this.)

X + 2Y + 3Z =
14

2X + Y + 3Z = 13

X + 2Y + Z = 8

3x + 3Y + 4Z = 21

The A matrix must be put in a file called
problem.csv, which would look like this:

1.0 2.0 3.0

2.0 1.0 3.0

1.0 2.0 1.0

3.0 3.0 4.0

Next add the right hand
side column, b, as an extra column:

1.0 2.0 3.0 14.0

2.0 1.0 3.0 13.0

1.0 2.0
1.0 8.0

3.0 3.0 4.0 21.0

Lastly, add the first row that tells the program
that there are 4 rows and 3 columns:

4 3

1.0 2.0 3.0 14.0

2.0 1.0 3.0 13.0

1.0 2.0
1.0 8.0

3.0 3.0 4.0 21.0

Note that we call the file problem.csv, for “comma
separated values”, but the commas are optional. Such files will usually be
generated by a program like Excel. An Excel version of this file, with commas
inserted, will look something like this:

4, 3

1.0, 2.0,
3.0, 14.0

2.0, 1.0,
3.0, 13.0

1.0, 2.0,
1.0, 8.0

3.0, 3.0,
4.0, 21.0

Then double-click on solveLA.exe or solveLAN.exe,
and the solution, as provided in solveLA.csv or solveLAN.csv, will be:

1.0

2.0

3.0

Which means:

X=1

Y=2

Z=3

The entire example output file is here: solveLA.csv

Note that in solveLA.csv, after the solution we
provide an analysis of how well the solution works. There are also a couple of
other items of data which you will need to know if you contact the author for
assistance.

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.

For technical references click here.

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

For tutorials on matrix problems click here.

To contact the author email rejones7@msn.com .

* *