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 2009/07/25 18:41:58 UTC

svn commit: r797792 - /commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/univariate/BrentMinimizerTest.java

Author: luc
Date: Sat Jul 25 16:41:58 2009
New Revision: 797792

URL: http://svn.apache.org/viewvc?rev=797792&view=rev
Log:
improved test coverage

Modified:
    commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/univariate/BrentMinimizerTest.java

Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/univariate/BrentMinimizerTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/univariate/BrentMinimizerTest.java?rev=797792&r1=797791&r2=797792&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/univariate/BrentMinimizerTest.java (original)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/univariate/BrentMinimizerTest.java Sat Jul 25 16:41:58 2009
@@ -22,6 +22,7 @@
 
 import org.apache.commons.math.FunctionEvaluationException;
 import org.apache.commons.math.MathException;
+import org.apache.commons.math.MaxIterationsExceededException;
 import org.apache.commons.math.analysis.QuinticFunction;
 import org.apache.commons.math.analysis.SinFunction;
 import org.apache.commons.math.analysis.UnivariateRealFunction;
@@ -82,6 +83,24 @@
     }
 
     @Test
+    public void testQuinticMax() throws MathException {
+        // The quintic function has zeros at 0, +-0.5 and +-1.
+        // The function has extrema (first derivative is zero) at 0.27195613 and 0.82221643,
+        UnivariateRealFunction f = new QuinticFunction();
+        UnivariateRealOptimizer minimizer = new BrentOptimizer();
+        assertEquals(0.27195613, minimizer.optimize(f, GoalType.MAXIMIZE, 0.2, 0.3), 1.0e-8);
+        minimizer.setMaximalIterationCount(30);
+        try {
+            minimizer.optimize(f, GoalType.MAXIMIZE, 0.2, 0.3);
+            fail("an exception should have been thrown");
+        } catch (MaxIterationsExceededException miee) {
+            // expected
+        } catch (Exception e) {
+            fail("wrong exception caught");
+        }
+    }
+
+    @Test
     public void testMinEndpoints() throws Exception {
         UnivariateRealFunction f = new SinFunction();
         UnivariateRealOptimizer solver = new BrentOptimizer();