Class GaussJordanElimination


  • public class GaussJordanElimination
    extends Object
    The GaussJordanElimination data type provides methods to solve a linear system of equations Ax = b, where A is an n-by-n matrix and b is a length n vector. If no solution exists, it finds a solution y to yA = 0, yb ≠ 0, which serves as a certificate of infeasibility.

    This implementation uses Gauss-Jordan elimination with partial pivoting. See GaussianElimination for an implementation that uses Gaussian elimination (but does not provide the certificate of infeasibility). For an industrial-strength numerical linear algebra library, see JAMA.

    This computes correct results if all arithmetic performed is without floating-point rounding error or arithmetic overflow. In practice, there will be floating-point rounding error; partial pivoting helps prevent accumulated floating-point rounding errors from growing out of control (though it does not provide any guarantees).

    For additional documentation, see Section 9.9 Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.

    Author:
    Robert Sedgewick, Kevin Wayne
    • Constructor Detail

      • GaussJordanElimination

        public GaussJordanElimination​(double[][] A,
                                      double[] b)
        Solves the linear system of equations Ax = b, where A is an n-by-n matrix and b is a length n vector.
        Parameters:
        A - the n-by-n constraint matrix
        b - the length n right-hand-side vector
    • Method Detail

      • primal

        public double[] primal()
        Returns a solution to the linear system of equations Ax = b.
        Returns:
        a solution x to the linear system of equations Ax = b; null if no such solution
      • dual

        public double[] dual()
        Returns a solution to the linear system of equations yA = 0, yb ≠ 0.
        Returns:
        a solution y to the linear system of equations yA = 0, yb ≠ 0; null if no such solution
      • isFeasible

        public boolean isFeasible()
        Returns true if there exists a solution to the linear system of equations Ax = b.
        Returns:
        true if there exists a solution to the linear system of equations Ax = b; false otherwise
      • main

        public static void main​(String[] args)
        Unit tests the GaussJordanElimination data type.
        Parameters:
        args - the command-line arguments