# SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.algebra.linear.matrix.doubles.linearsystem

## Class LinearSystemSolver

• java.lang.Object
• com.numericalmethod.suanshu.algebra.linear.matrix.doubles.linearsystem.LinearSystemSolver

• public class LinearSystemSolver
extends Object
Solve a system of linear equations in the form:
Ax = b,
We assume that, after row reduction, A has no more rows than columns. That is, the system must not be over-determined. For example, the following system is not over-determined. One of the rows is linearly dependent. $\begin{bmatrix} 1 & -1 & 0\\ 0 & -2 & 0\\ 0 & 0 & -1\\ 0 & 0 & -2 \end{bmatrix} x = \begin{bmatrix} -0.8\\ -1.6\\ 0.8\\ 1.6 \end{bmatrix}$ This linear system of equations is solved in two steps.
1. First, solve Ax = 0, the homogeneous system, for non trivial solutions.
2. Then, solve Ax = b for a particular solution.
If A has full rank, this implementation solves the system by LU decomposition. Otherwise, a particular solution is found by x = T * b. The final solution is:
x_particular + {x_null_space_of_A}
hence, the translation of the null space of A by the vector x_particular.
• ### Constructor Detail

• #### LinearSystemSolver

public LinearSystemSolver(double epsilon)
Construct a solver for a linear system of equations.
Parameters:
epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0
• ### Method Detail

• #### solve

public LinearSystemSolver.Solution solve(Matrix A0)
Get a particular solution for the linear system, Ax = b.
Parameters:
A0 - a matrix representing a linear system of equations (the homogeneous part)
Returns:
a particular solution