You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2012/02/28 15:56:26 UTC
svn commit: r1294680 -
/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/optimization/univariate/BrentOptimizerTest.java
Author: luc
Date: Tue Feb 28 14:56:26 2012
New Revision: 1294680
URL: http://svn.apache.org/viewvc?rev=1294680&view=rev
Log:
Added a test.
Modified:
commons/proper/math/trunk/src/test/java/org/apache/commons/math3/optimization/univariate/BrentOptimizerTest.java
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/optimization/univariate/BrentOptimizerTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/optimization/univariate/BrentOptimizerTest.java?rev=1294680&r1=1294679&r2=1294680&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/optimization/univariate/BrentOptimizerTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/optimization/univariate/BrentOptimizerTest.java Tue Feb 28 14:56:26 2012
@@ -17,6 +17,8 @@
package org.apache.commons.math3.optimization.univariate;
+import org.apache.commons.math3.exception.NumberIsTooLargeException;
+import org.apache.commons.math3.exception.NumberIsTooSmallException;
import org.apache.commons.math3.exception.TooManyEvaluationsException;
import org.apache.commons.math3.analysis.QuinticFunction;
import org.apache.commons.math3.analysis.SinFunction;
@@ -50,6 +52,30 @@ public final class BrentOptimizerTest {
}
@Test
+ public void testBoundaries() {
+ final double lower = -1.0;
+ final double upper = +1.0;
+ UnivariateFunction f = new UnivariateFunction() {
+ public double value(double x) {
+ if (x < lower) {
+ throw new NumberIsTooSmallException(x, lower, true);
+ } else if (x > upper) {
+ throw new NumberIsTooLargeException(x, upper, true);
+ } else {
+ return x;
+ }
+ }
+ };
+ UnivariateOptimizer optimizer = new BrentOptimizer(1e-10, 1e-14);
+ Assert.assertEquals(lower,
+ optimizer.optimize(100, f, GoalType.MINIMIZE, lower, upper).getPoint(),
+ 1.0e-8);
+ Assert.assertEquals(upper,
+ optimizer.optimize(100, f, GoalType.MAXIMIZE, lower, upper).getPoint(),
+ 1.0e-8);
+ }
+
+ @Test
public void testQuinticMin() {
// The function has local minima at -0.27195613 and 0.82221643.
UnivariateFunction f = new QuinticFunction();