Class LinearSystemSolver

java.lang.Object
dev.nm.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 invalid input: '&' -1 invalid input: '&' 0\\ 0 invalid input: '&' -2 invalid input: '&' 0\\ 0 invalid input: '&' 0 invalid input: '&' -1\\ 0 invalid input: '&' 0 invalid input: '&' -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.
See Also:
  • Constructor Details

    • 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 Details

    • solve

      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