@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testRemoveNullspaceComponent() { int matrixSize = 10; boolean makeLargestComponentPositive = true; SVDNullspaceCalculator nullspaceCalculator = new SVDNullspaceCalculator(matrixSize, makeLargestComponentPositive); Random random = new Random(); double[] singularValues = RandomNumbers.nextDoubleArray(random, matrixSize, 1.0, 2.0); // singularValues[0] = 0.0; DenseMatrix64F matrix = RandomMatrices.createSingularValues(matrixSize, matrixSize, random, singularValues); nullspaceCalculator.setMatrix(matrix, 1); DenseMatrix64F nullspace = nullspaceCalculator.getNullspace(); DenseMatrix64F matrixCopy = new DenseMatrix64F(matrix); nullspaceCalculator.removeNullspaceComponent(matrixCopy); assertTrue(isNullspaceComponentZero(matrixCopy, nullspace)); }
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testRemoveNullspaceComponent2() { int matrixSize = 6; boolean makeLargestComponentPositive = true; SVDNullspaceCalculator nullspaceCalculator = new SVDNullspaceCalculator(matrixSize, makeLargestComponentPositive); Random random = new Random(); double[] singularValues = RandomNumbers.nextDoubleArray(random, matrixSize, 1.0, 2.0); singularValues[matrixSize / 2] = 0.0; DenseMatrix64F matrix1 = RandomMatrices.createSingularValues(matrixSize, matrixSize, random, singularValues); nullspaceCalculator.setMatrix(matrix1, 1); DenseMatrix64F nullspace = nullspaceCalculator.getNullspace(); DenseMatrix64F matrix2 = RandomMatrices.createRandom(matrixSize, matrixSize, random); nullspaceCalculator.removeNullspaceComponent(matrix2); assertTrue(isNullspaceComponentZero(matrix2, nullspace)); }
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout = 30000) public void testNullspace() { int matrixSize = 10; boolean makeLargestComponentPositive = true; SVDNullspaceCalculator nullspaceCalculator = new SVDNullspaceCalculator(matrixSize, makeLargestComponentPositive); Random random = new Random(); double[] singularValues = RandomNumbers.nextDoubleArray(random, matrixSize, 1.0, 2.0); singularValues[0] = 0.0; DenseMatrix64F matrix = RandomMatrices.createSingularValues(matrixSize, matrixSize, random, singularValues); nullspaceCalculator.setMatrix(matrix, 1); DenseMatrix64F nullspace = nullspaceCalculator.getNullspace(); DenseMatrix64F matrixTimesNullspace = new DenseMatrix64F(matrix.getNumRows(), nullspace.getNumCols()); CommonOps.mult(matrix, nullspace, matrixTimesNullspace); assertTrue(MatrixFeatures.isConstantVal(matrixTimesNullspace, 0.0, 1e-12)); }