Solutions for Systems of Linear Equations

By Rondall E. Jones, Ph.D.



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:






Which means:





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 .