use of org.apache.ignite.ml.math.Matrix in project ignite by apache.
the class LUDecompositionTest method getP.
/** */
@Test
public void getP() throws Exception {
Matrix luDecompositionP = new LUDecomposition(testMatrix).getP();
assertEquals("Unexpected row size.", testP.rowSize(), luDecompositionP.rowSize());
assertEquals("Unexpected column size.", testP.columnSize(), luDecompositionP.columnSize());
for (int i = 0; i < testP.rowSize(); i++) for (int j = 0; j < testP.columnSize(); j++) assertEquals("Unexpected value at (" + i + "," + j + ").", testP.getX(i, j), luDecompositionP.getX(i, j), 0.0000001d);
luDecompositionP.destroy();
}
use of org.apache.ignite.ml.math.Matrix in project ignite by apache.
the class EigenDecompositionTest method test.
/** */
private void test(double[][] mRaw, double[] expRealEigenValues) {
DenseLocalOnHeapMatrix m = new DenseLocalOnHeapMatrix(mRaw);
EigenDecomposition decomposition = new EigenDecomposition(m);
Matrix d = decomposition.getD();
Matrix v = decomposition.getV();
assertIsDiagonalNonZero(d);
// check that d's diagonal consists of eigenvalues of m.
assertDiagonalConsistsOfEigenvalues(m, d, v);
// m = v d v^{-1} is equivalent to
// m v = v d
assertMatricesAreEqual(m.times(v), v.times(d));
assertEigenvalues(decomposition, expRealEigenValues);
decomposition.destroy();
}
use of org.apache.ignite.ml.math.Matrix in project ignite by apache.
the class EigenDecompositionTest method testSymmetricMatrix.
/** */
@Test
public void testSymmetricMatrix() {
EigenDecomposition decomposition = new EigenDecomposition(new DenseLocalOnHeapMatrix(new double[][] { { 1.0d, 0.0d, 0.0d, 1.0d }, { 0.0d, 1.0d, 0.0d, 1.0d }, { 0.0d, 0.0d, 2.0d, 0.0d }, { 1.0d, 1.0d, 0.0d, 2.0d } }));
Matrix d = decomposition.getD();
Matrix v = decomposition.getV();
assertNotNull("Matrix d is expected to be not null.", d);
assertNotNull("Matrix v is expected to be not null.", v);
assertEquals("Unexpected rows in d matrix.", 4, d.rowSize());
assertEquals("Unexpected cols in d matrix.", 4, d.columnSize());
assertEquals("Unexpected rows in v matrix.", 4, v.rowSize());
assertEquals("Unexpected cols in v matrix.", 4, v.columnSize());
assertIsDiagonalNonZero(d);
decomposition.destroy();
}
use of org.apache.ignite.ml.math.Matrix in project ignite by apache.
the class EigenDecompositionTest method testNonSquareMatrix.
/** */
@Test
public void testNonSquareMatrix() {
EigenDecomposition decomposition = new EigenDecomposition(new DenseLocalOnHeapMatrix(new double[][] { { 1.0d, 0.0d, 0.0d }, { 0.0d, 1.0d, 0.0d }, { 0.0d, 0.0d, 2.0d }, { 1.0d, 1.0d, 0.0d } }));
// todo find out why decomposition of 3X4 matrix throws row index exception
Matrix d = decomposition.getD();
Matrix v = decomposition.getV();
assertNotNull("Matrix d is expected to be not null.", d);
assertNotNull("Matrix v is expected to be not null.", v);
assertEquals("Unexpected rows in d matrix.", 4, d.rowSize());
assertEquals("Unexpected cols in d matrix.", 4, d.columnSize());
assertEquals("Unexpected rows in v matrix.", 4, v.rowSize());
assertEquals("Unexpected cols in v matrix.", 3, v.columnSize());
assertIsDiagonal(d, true);
decomposition.destroy();
}
use of org.apache.ignite.ml.math.Matrix in project ignite by apache.
the class LUDecompositionTest method matrixUtilTest.
/**
* Test for {@link MatrixUtil} features (more specifically, we test matrix which does not have
* a native like/copy methods support).
*/
@Test
public void matrixUtilTest() {
LUDecomposition dec = new LUDecomposition(new PivotedMatrixView(testMatrix));
Matrix luDecompositionL = dec.getL();
assertEquals("Unexpected L row size.", testL.rowSize(), luDecompositionL.rowSize());
assertEquals("Unexpected L column size.", testL.columnSize(), luDecompositionL.columnSize());
for (int i = 0; i < testL.rowSize(); i++) for (int j = 0; j < testL.columnSize(); j++) assertEquals("Unexpected L value at (" + i + "," + j + ").", testL.getX(i, j), luDecompositionL.getX(i, j), 0.0000001d);
Matrix luDecompositionU = dec.getU();
assertEquals("Unexpected U row size.", testU.rowSize(), luDecompositionU.rowSize());
assertEquals("Unexpected U column size.", testU.columnSize(), luDecompositionU.columnSize());
for (int i = 0; i < testU.rowSize(); i++) for (int j = 0; j < testU.columnSize(); j++) assertEquals("Unexpected U value at (" + i + "," + j + ").", testU.getX(i, j), luDecompositionU.getX(i, j), 0.0000001d);
Matrix luDecompositionP = dec.getP();
assertEquals("Unexpected P row size.", testP.rowSize(), luDecompositionP.rowSize());
assertEquals("Unexpected P column size.", testP.columnSize(), luDecompositionP.columnSize());
for (int i = 0; i < testP.rowSize(); i++) for (int j = 0; j < testP.columnSize(); j++) assertEquals("Unexpected P value at (" + i + "," + j + ").", testP.getX(i, j), luDecompositionP.getX(i, j), 0.0000001d);
dec.destroy();
}
Aggregations