ApCoCoALib:LESystemSolver

From ApCoCoAWiki


User documentation for files LESystemSolver.C and LESystemSolver.H

These files contain an interface to several different algorithms which allow to compute a solution of a linear equation system M*x = b over a field K.

The interface to the different algorithms works as follows:

bool LESystemSolver(x, M, b, SolveMethod)
  

Solves the linear equation system M*x = b where M, x, and b are matrix objects of appropriate dimension. If a solution exists it will be stored in x and the method returns "true", otherwise "false" is returned and x will remain unchanged. The parameter SolveMethod specifies which of the supported algorithms will be used to solve the system.

The following values for SolveMethod are currently available:

LSS_GAUSS 

Use an implementation of Gauss' algorithm to solve the linear equation system. This is the default method if no other value for SolveMethod is given. Works over every field.

LSS_LINBOX

Uses (fast) LinBox algorithms to solve the linear equation system. Currently you can only have systems over the field of rationals or over finite fields with characteristic p, p prime, solved by LinBox.

Maintainer documentation for files LESystemSolver.C and LESystemSolver.H

The implementation of Gauss' algorithm contains no special optimizations. The linear equation system is transformed into row echelon form and if a solution exists it is computed by back substitution.

For the integration of the LinBox library it was necessary to create several distinct convert functions.


Bugs, Shortcomings and other ideas

The implementation of Gauss' algorithm is not very efficient as it contains no special optimization.