
public class LinearEquationSystem extends Object
| Modifier and Type | Field and Description | 
|---|---|
| private double[][] | coeffThe matrix of coefficients. | 
| private int[] | colEncodes column permutations, column j is at position col[j]. | 
| private static Logging | LOGLogger. | 
| private int | rankThe rank of the coefficient matrix. | 
| private boolean | reducedRowEchelonFormIndicates if linear equation system is in reduced row echelon form. | 
| private double[] | rhsThe right hand side of the equation system. | 
| private int[] | rowEncodes row permutations, row i is at position row[i]. | 
| private boolean | solvableIndicates if linear equation system is solvable. | 
| private boolean | solvedIndicates if solvability has been checked. | 
| private static int | TOTAL_PIVOT_SEARCHIndicates total pivot search strategy. | 
| private static int | TRIVAL_PIVOT_SEARCHIndicates trivial pivot search strategy. | 
| private double[][] | uHolds the space of solutions of the homogeneous linear equation system. | 
| private double[] | x_0Holds the special solution vector. | 
| Constructor and Description | 
|---|
| LinearEquationSystem(double[][] a,
                    double[] b)Constructs a linear equation system with given coefficient matrix
  aand right hand sideb. | 
| LinearEquationSystem(double[][] a,
                    double[] b,
                    int[] rowPermutations,
                    int[] columnPermutations)Constructs a linear equation system with given coefficient matrix
  aand right hand sideb. | 
| Modifier and Type | Method and Description | 
|---|---|
| String | equationsToString(int fractionDigits)Returns a string representation of this equation system. | 
| String | equationsToString(NumberFormat nf)Returns a string representation of this equation system. | 
| String | equationsToString(String prefix,
                 int fractionDigits)Returns a string representation of this equation system. | 
| String | equationsToString(String prefix,
                 NumberFormat nf)Returns a string representation of this equation system. | 
| private void | format(NumberFormat nf,
      StringBuilder buffer,
      double value,
      int maxIntegerDigits)Helper method for output of equations and solution. | 
| double[][] | getCoefficents()Returns a copy of the coefficient array of this linear equation system. | 
| int[] | getColumnPermutations()Returns a copy of the column permutations, column i is at position
 column[i]. | 
| double[] | getRHS()Returns a copy of the right hand side of this linear equation system. | 
| int[] | getRowPermutations()Returns a copy of the row permutations, row i is at position row[i]. | 
| private int | integerDigits(double d)Returns the integer digits of the specified double value. | 
| boolean | isSolvable()Checks if a solved system is solvable. | 
| private boolean | isSolvable(int method)Checks solvability of this linear equation system with the chosen method. | 
| boolean | isSolved()Tests if system has already been tested for solvability. | 
| private int | maxIntegerDigits(double[] values)Returns the maximum integer digits of the specified values. | 
| private int[] | maxIntegerDigits(double[][] values)Returns the maximum integer digits in each column of the specified values. | 
| private IntIntPair | nonZeroPivotSearch(int k)Method for trivial pivot search, searches for non-zero entry. | 
| private void | permutePivot(IntIntPair pos1,
            IntIntPair pos2)permutes two matrix rows and two matrix columns | 
| private void | pivotOperation(int k)performs a pivot operation | 
| private void | reducedRowEchelonForm(int method)Brings this linear equation system into reduced row echelon form with
 choice of pivot method. | 
| String | solutionToString(int fractionDigits)Returns a string representation of the solution of this equation system. | 
| private void | solve(int method)solves linear system with the chosen method | 
| void | solveByTotalPivotSearch()Solves this linear equation system by total pivot search. | 
| void | solveByTrivialPivotSearch()Solves this linear equation system by trivial pivot search. | 
| int | subspacedim()Return dimensionality of spanned subspace. | 
| private IntIntPair | totalPivotSearch(int k)Method for total pivot search, searches for x,y in {k,...n}, so that |a_xy|
 > |a_ij| | 
private static final Logging LOG
private static final int TRIVAL_PIVOT_SEARCH
private static final int TOTAL_PIVOT_SEARCH
private boolean solvable
private boolean solved
private int rank
private double[][] coeff
private double[] rhs
private int[] row
private int[] col
private double[] x_0
private double[][] u
private boolean reducedRowEchelonForm
public LinearEquationSystem(double[][] a,
                    double[] b)
a and right hand side b.a - the matrix of the coefficients of the linear equation systemb - the right hand side of the linear equation systempublic LinearEquationSystem(double[][] a,
                    double[] b,
                    int[] rowPermutations,
                    int[] columnPermutations)
a and right hand side b.a - the matrix of the coefficients of the linear equation systemb - the right hand side of the linear equation systemrowPermutations - the row permutations, row i is at position row[i]columnPermutations - the column permutations, column i is at position
        column[i]public double[][] getCoefficents()
public double[] getRHS()
public int[] getRowPermutations()
public int[] getColumnPermutations()
public boolean isSolved()
public void solveByTotalPivotSearch()
 ( a_11      ...      a_1n      ) 
 (  0          ...        a_2n      ) 
 (  0 ... a_ii         ... a_in      )
 (  0 ... a_(i+1)i ... a_(i+1)n  ) 
 (  0 ... a_ni         ... a_nn      ) 
  Then we search for x,y in {i,...n}, so that |a_xy| > |a_ij|public void solveByTrivialPivotSearch()
public boolean isSolvable()
public String equationsToString(String prefix, int fractionDigits)
prefix - the prefix of each linefractionDigits - the number of fraction digits for output accuracypublic String equationsToString(String prefix, NumberFormat nf)
prefix - the prefix of each linenf - the number formatpublic String equationsToString(NumberFormat nf)
nf - the number formatpublic String equationsToString(int fractionDigits)
fractionDigits - the number of fraction digits for output accuracypublic String solutionToString(int fractionDigits)
fractionDigits - precisionprivate void reducedRowEchelonForm(int method)
method - the pivot search method to useprivate IntIntPair totalPivotSearch(int k)
k - search starts at entry (k,k)private IntIntPair nonZeroPivotSearch(int k)
k - search starts at entry (k,k)private void permutePivot(IntIntPair pos1, IntIntPair pos2)
pos1 - the fist position for the permutationpos2 - the second position for the permutationprivate void pivotOperation(int k)
k - pivoting takes place below (k,k)private void solve(int method)
            throws NullPointerException
method - the pivot search methodNullPointerExceptionprivate boolean isSolvable(int method)
                    throws NullPointerException
method - the pivot search methodNullPointerExceptionprivate int[] maxIntegerDigits(double[][] values)
values - the values arrayprivate int maxIntegerDigits(double[] values)
values - the values arrayprivate int integerDigits(double d)
d - the double valueprivate void format(NumberFormat nf, StringBuilder buffer, double value, int maxIntegerDigits)
nf - the number formatbuffer - the string buffer to append the value tovalue - the value to appendmaxIntegerDigits - the maximum number of integer digitspublic int subspacedim()