edu.princeton.cs.algs4

## Class GaussJordanElimination

• Object
• edu.princeton.cs.algs4.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 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 Summary

Constructors
Constructor and Description
```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.
• ### Method Summary

All Methods
Modifier and Type Method and Description
`double[]` `dual()`
Returns a solution to the linear system of equations yA = 0, yb ≠ 0.
`boolean` `isFeasible()`
Returns true if there exists a solution to the linear system of equations Ax = b.
`static void` `main(String[] args)`
Unit tests the `GaussJordanElimination` data type.
`double[]` `primal()`
Returns a solution to the linear system of equations Ax = b.
• ### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### 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