Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
|
|
@ -0,0 +1,85 @@
|
|||
import java.util.List;
|
||||
|
||||
public final class ReducedRowEchelonForm {
|
||||
|
||||
public static void main(String[] args) {
|
||||
double[][] first = new double[][] { { 1.0, 2.0, -1.0, -4.0 },
|
||||
{ 2.0, 3.0, -1.0, -11.0 },
|
||||
{ -2.0, 0.0, -3.0, 22.0 } };
|
||||
|
||||
double[][] second = new double[][] { { 1.0, 2.0, 3.0, 4.0, 3.0, 1.0 },
|
||||
{ 2.0, 4.0, 6.0, 2.0, 6.0, 2.0 },
|
||||
{ 3.0, 6.0, 18.0, 9.0, 9.0, -6.0 },
|
||||
{ 4.0, 8.0, 12.0, 10.0, 12.0, 4.0 },
|
||||
{ 5.0, 10.0, 24.0, 11.0, 15.0, -4.0 } };
|
||||
|
||||
List.of( first, second ).forEach( m -> {
|
||||
display("Original matrix:", m);
|
||||
display("Reduced row echelon form:", reducedRowEchelonForm(m));
|
||||
} );
|
||||
}
|
||||
|
||||
private static double[][] reducedRowEchelonForm(double[][] matrix) {
|
||||
final int rowCount = matrix.length;
|
||||
final int colCount = matrix[0].length;
|
||||
|
||||
int lead = 0;
|
||||
for ( int row = 0; row < rowCount; row++ ) {
|
||||
if ( colCount <= lead ) {
|
||||
return matrix;
|
||||
}
|
||||
|
||||
int ro = row;
|
||||
while ( matrix[ro][lead] == 0.0 ) {
|
||||
ro += 1;
|
||||
if ( rowCount == ro ) {
|
||||
ro = row;
|
||||
lead += 1;
|
||||
if ( colCount == lead ) {
|
||||
return matrix;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final double[] temp = matrix[row];
|
||||
matrix[row] = matrix[ro];
|
||||
matrix[ro] = temp;
|
||||
|
||||
if ( matrix[row][lead] != 0.0 ) {
|
||||
final double divisor = matrix[row][lead];
|
||||
for ( int co = 0; co < matrix[0].length; co++ ) {
|
||||
matrix[row][co] /= divisor;
|
||||
}
|
||||
}
|
||||
|
||||
for ( int j = 0; j < rowCount; j++ ) {
|
||||
if ( j != row ) {
|
||||
final double multiple = matrix[j][lead];
|
||||
for ( int co = 0; co < matrix[0].length; co++ ) {
|
||||
matrix[j][co] -= matrix[row][co] * multiple;
|
||||
}
|
||||
}
|
||||
}
|
||||
lead += 1;
|
||||
}
|
||||
return matrix;
|
||||
}
|
||||
|
||||
private static void display(String title, double[][] matrix) {
|
||||
System.out.println(title);
|
||||
final int rowCount = matrix.length;
|
||||
final int colCount = matrix[0].length;
|
||||
|
||||
for ( int row = 0; row < rowCount; row++ ) {
|
||||
for ( int col = 0; col < colCount; col++ ) {
|
||||
if ( matrix[row][col] == -0.0 ) {
|
||||
matrix[row][col] = 0.0;
|
||||
}
|
||||
System.out.print(String.format("%6.1f", matrix[row][col]));
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue