BroydenMatrixUpdateFunction implements NewtonRootFinderMatrixUpdateFunction { @Override public DoubleMatrix2D getUpdatedMatrix(final Function1D<DoubleMatrix1D, DoubleMatrix2D> j, DoubleMatrix1D x, final DoubleMatrix1D deltaX, final DoubleMatrix1D deltaY, final DoubleMatrix2D matrix) { Validate.notNull(deltaX); Validate.notNull(deltaY); Validate.notNull(matrix); final double length2 = OG_ALGEBRA.getInnerProduct(deltaX, deltaX); if (length2 == 0.0) { return matrix; } Matrix<?> temp = OG_ALGEBRA.subtract(deltaY, OG_ALGEBRA.multiply(matrix, deltaX)); temp = OG_ALGEBRA.scale(temp, 1.0 / length2); return (DoubleMatrix2D) OG_ALGEBRA.add(matrix, OG_ALGEBRA.getOuterProduct(temp, deltaX)); }  @Override DoubleMatrix2D getUpdatedMatrix(final Function1D<DoubleMatrix1D, DoubleMatrix2D> j, DoubleMatrix1D x, final DoubleMatrix1D deltaX, final DoubleMatrix1D deltaY, final DoubleMatrix2D matrix);  }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullDeltaX() { UPDATE.getUpdatedMatrix(J, V, null, V, M); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullDeltaY() { UPDATE.getUpdatedMatrix(J, V, V, null, M); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullMatrix() { UPDATE.getUpdatedMatrix(J, V, V, V, null); }