commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From l..@apache.org
Subject svn commit: r1084690 - in /commons/proper/math/trunk/src: main/java/org/apache/commons/math/analysis/integration/ site/xdoc/ test/java/org/apache/commons/math/analysis/integration/
Date Wed, 23 Mar 2011 19:36:05 GMT
Author: luc
Date: Wed Mar 23 19:36:04 2011
New Revision: 1084690

URL: http://svn.apache.org/viewvc?rev=1084690&view=rev
Log:
Removed the ConvergingAlgorithm interface and ConvergingAlgorithmImpl class

JIRA: MATH-500

Removed:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/ConvergingAlgorithm.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/ConvergingAlgorithmImpl.java
Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegrator.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java
    commons/proper/math/trunk/src/site/xdoc/changes.xml
    commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegrator.java?rev=1084690&r1=1084689&r2=1084690&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegrator.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegrator.java
Wed Mar 23 19:36:04 2011
@@ -153,12 +153,6 @@ public class LegendreGaussIntegrator ext
 
     }
 
-    @Deprecated
-    public double integrate(final double min, final double max)
-        throws ConvergenceException,  MathUserException, IllegalArgumentException {
-        return integrate(f, min, max);
-    }
-
     /** {@inheritDoc} */
     public double integrate(final UnivariateRealFunction f, final double min, final double
max)
         throws ConvergenceException,  MathUserException, IllegalArgumentException {

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java?rev=1084690&r1=1084689&r2=1084690&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java
Wed Mar 23 19:36:04 2011
@@ -39,30 +39,12 @@ import org.apache.commons.math.util.Fast
 public class RombergIntegrator extends UnivariateRealIntegratorImpl {
 
     /**
-     * Construct an integrator for the given function.
-     *
-     * @param f function to integrate
-     * @deprecated as of 2.0 the integrand function is passed as an argument
-     * to the {@link #integrate(UnivariateRealFunction, double, double)}method.
-     */
-    @Deprecated
-    public RombergIntegrator(UnivariateRealFunction f) {
-        super(f, 32);
-    }
-
-    /**
      * Construct an integrator.
      */
     public RombergIntegrator() {
         super(32);
     }
 
-    @Deprecated
-    public double integrate(final double min, final double max)
-        throws MaxCountExceededException, MathUserException, IllegalArgumentException {
-        return integrate(f, min, max);
-    }
-
     /** {@inheritDoc} */
     public double integrate(final UnivariateRealFunction f, final double min, final double
max)
         throws MaxCountExceededException, MathUserException, IllegalArgumentException {

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java?rev=1084690&r1=1084689&r2=1084690&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java
Wed Mar 23 19:36:04 2011
@@ -38,30 +38,12 @@ import org.apache.commons.math.util.Fast
 public class SimpsonIntegrator extends UnivariateRealIntegratorImpl {
 
     /**
-     * Construct an integrator for the given function.
-     *
-     * @param f function to integrate
-     * @deprecated as of 2.0 the integrand function is passed as an argument
-     * to the {@link #integrate(UnivariateRealFunction, double, double)}method.
-     */
-    @Deprecated
-    public SimpsonIntegrator(UnivariateRealFunction f) {
-        super(f, 64);
-    }
-
-    /**
      * Construct an integrator.
      */
     public SimpsonIntegrator() {
         super(64);
     }
 
-    @Deprecated
-    public double integrate(final double min, final double max)
-        throws MaxCountExceededException, MathUserException, IllegalArgumentException {
-        return integrate(f, min, max);
-    }
-
     /** {@inheritDoc} */
     public double integrate(final UnivariateRealFunction f, final double min, final double
max)
         throws MaxCountExceededException, MathUserException, IllegalArgumentException {

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java?rev=1084690&r1=1084689&r2=1084690&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java
Wed Mar 23 19:36:04 2011
@@ -40,18 +40,6 @@ public class TrapezoidIntegrator extends
     private double s;
 
     /**
-     * Construct an integrator for the given function.
-     *
-     * @param f function to integrate
-     * @deprecated as of 2.0 the integrand function is passed as an argument
-     * to the {@link #integrate(UnivariateRealFunction, double, double)}method.
-     */
-    @Deprecated
-    public TrapezoidIntegrator(UnivariateRealFunction f) {
-        super(f, 64);
-    }
-
-    /**
      * Construct an integrator.
      */
     public TrapezoidIntegrator() {
@@ -96,12 +84,6 @@ public class TrapezoidIntegrator extends
         }
     }
 
-    @Deprecated
-    public double integrate(final double min, final double max)
-        throws MaxCountExceededException, MathUserException, IllegalArgumentException {
-        return integrate(f, min, max);
-    }
-
     /** {@inheritDoc} */
     public double integrate(final UnivariateRealFunction f, final double min, final double
max)
         throws MaxCountExceededException, MathUserException, IllegalArgumentException {

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java?rev=1084690&r1=1084689&r2=1084690&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java
Wed Mar 23 19:36:04 2011
@@ -26,9 +26,74 @@ import org.apache.commons.math.analysis.
  * @version $Revision$ $Date$
  * @since 1.2
  */
-public interface UnivariateRealIntegrator extends ConvergingAlgorithm {
+public interface UnivariateRealIntegrator {
 
-   /**
+    /**
+     * Set the upper limit for the number of iterations.
+     * <p>
+     * Usually a high iteration count indicates convergence problems. However,
+     * the "reasonable value" varies widely for different algorithms. Users are
+     * advised to use the default value supplied by the algorithm.</p>
+     * <p>
+     * A {@link ConvergenceException} will be thrown if this number
+     * is exceeded.</p>
+     *
+     * @param count maximum number of iterations
+     */
+    public void setMaximalIterationCount(int count);
+
+    /**
+     * Get the upper limit for the number of iterations.
+     *
+     * @return the actual upper limit
+     */
+    public int getMaximalIterationCount();
+
+    /**
+     * Set the absolute accuracy.
+     * <p>
+     * The default is usually chosen so that results in the interval
+     * -10..-0.1 and +0.1..+10 can be found with a reasonable accuracy. If the
+     * expected absolute value of your results is of much smaller magnitude, set
+     * this to a smaller value.</p>
+     * <p>
+     * Algorithms are advised to do a plausibility check with the relative
+     * accuracy, but clients should not rely on this.</p>
+     *
+     * @param accuracy the accuracy.
+     * @throws IllegalArgumentException if the accuracy can't be achieved by
+     * the solver or is otherwise deemed unreasonable.
+     */
+    public void setAbsoluteAccuracy(double accuracy);
+
+    /**
+     * Get the actual absolute accuracy.
+     *
+     * @return the accuracy
+     */
+    public double getAbsoluteAccuracy();
+
+    /**
+     * Set the relative accuracy.
+     * <p>
+     * This is used to stop iterations if the absolute accuracy can't be
+     * achieved due to large values or short mantissa length.</p>
+     * <p>
+     * If this should be the primary criterion for convergence rather then a
+     * safety measure, set the absolute accuracy to a ridiculously small value,
+     * like {@link org.apache.commons.math.util.MathUtils#SAFE_MIN MathUtils.SAFE_MIN}.</p>
+     *
+     * @param accuracy the relative accuracy.
+     */
+    public void setRelativeAccuracy(double accuracy);
+
+    /**
+     * Get the actual relative accuracy.
+     * @return the accuracy
+     */
+    public double getRelativeAccuracy();
+
+    /**
      * Set the lower limit for the number of iterations.
      * <p>
      * Minimal iteration is needed to avoid false early convergence, e.g.

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java?rev=1084690&r1=1084689&r2=1084690&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java
Wed Mar 23 19:36:04 2011
@@ -17,9 +17,8 @@
 package org.apache.commons.math.analysis.integration;
 
 import org.apache.commons.math.MathRuntimeException;
-import org.apache.commons.math.analysis.UnivariateRealFunction;
 import org.apache.commons.math.exception.util.LocalizedFormats;
-import org.apache.commons.math.exception.NullArgumentException;
+import org.apache.commons.math.exception.MaxCountExceededException;
 
 /**
  * Provide a default implementation for several generic functions.
@@ -27,82 +26,81 @@ import org.apache.commons.math.exception
  * @version $Revision$ $Date$
  * @since 1.2
  */
-public abstract class UnivariateRealIntegratorImpl
-    extends ConvergingAlgorithmImpl implements UnivariateRealIntegrator {
+public abstract class UnivariateRealIntegratorImpl implements UnivariateRealIntegrator {
+
     /** Serializable version identifier. */
     private static final long serialVersionUID = 6248808456637441533L;
+
+    /** Maximum absolute error. */
+    protected double absoluteAccuracy;
+
+    /** Maximum relative error. */
+    protected double relativeAccuracy;
+
+    /** Maximum number of iterations. */
+    protected int maximalIterationCount;
+
     /** minimum number of iterations */
     protected int minimalIterationCount;
+
     /** default minimum number of iterations */
     protected int defaultMinimalIterationCount;
+
+    /** The last iteration count. */
+    protected int iterationCount;
+
     /** indicates whether an integral has been computed */
     protected boolean resultComputed = false;
+
     /** the last computed integral */
     protected double result;
-    /** The integrand functione.
-     * @deprecated as of 2.0 the integrand function is passed as an argument
-     * to the {@link #integrate(UnivariateRealFunction, double, double)}method. */
-    @Deprecated
-    protected UnivariateRealFunction f;
-
-     /**
-      * Construct an integrator with given iteration count and accuracy.
-      *
-      * @param f the integrand function
-      * @param defaultMaximalIterationCount maximum number of iterations
-      * @throws IllegalArgumentException if f is null or the iteration
-      * limits are not valid
-      * @deprecated as of 2.0 the integrand function is passed as an argument
-      * to the {@link #integrate(UnivariateRealFunction, double, double)}method.
-      */
-    @Deprecated
-    protected UnivariateRealIntegratorImpl(final UnivariateRealFunction f,
-                                           final int defaultMaximalIterationCount)
-        throws IllegalArgumentException {
-
-        setMaximalIterationCount(defaultMaximalIterationCount);
-        setAbsoluteAccuracy(1.0e-15);
-
-        if (f == null) {
-            throw new NullArgumentException(LocalizedFormats.FUNCTION);
-        }
-
-        this.f = f;
-
-        // parameters that are problem specific
-        setRelativeAccuracy(1.0e-6);
-        this.defaultMinimalIterationCount = 3;
-        this.minimalIterationCount = defaultMinimalIterationCount;
-
-        verifyIterationCount();
-    }
 
     /**
      * Construct an integrator with given iteration count and accuracy.
      *
-     * @param defaultMaximalIterationCount maximum number of iterations
-     * @throws IllegalArgumentException if f is null or the iteration
-     * limits are not valid
+     * @param maximalIterationCount maximum number of iterations
      */
-    protected UnivariateRealIntegratorImpl(final int defaultMaximalIterationCount)
-        throws IllegalArgumentException {
+    protected UnivariateRealIntegratorImpl(final int maximalIterationCount) {
 
-        setMaximalIterationCount(defaultMaximalIterationCount);
+        setMaximalIterationCount(maximalIterationCount);
         setAbsoluteAccuracy(1.0e-15);
-        // parameters that are problem specific
         setRelativeAccuracy(1.0e-6);
-        this.defaultMinimalIterationCount = 3;
-        this.minimalIterationCount = defaultMinimalIterationCount;
+        setMinimalIterationCount(3);
 
         verifyIterationCount();
     }
 
-    /**
-     * Access the last computed integral.
-     *
-     * @return the last computed integral
-     * @throws IllegalStateException if no integral has been computed
-     */
+    /** {@inheritDoc} */
+    public void setMaximalIterationCount(final int count) {
+        maximalIterationCount = count;
+    }
+
+    /** {@inheritDoc} */
+    public int getMaximalIterationCount() {
+        return maximalIterationCount;
+    }
+
+    /** {@inheritDoc} */
+    public void setAbsoluteAccuracy(double accuracy) {
+        absoluteAccuracy = accuracy;
+    }
+
+    /** {@inheritDoc} */
+    public double getAbsoluteAccuracy() {
+        return absoluteAccuracy;
+    }
+
+    /** {@inheritDoc} */
+    public void setRelativeAccuracy(final double accuracy) {
+        relativeAccuracy = accuracy;
+    }
+
+    /** {@inheritDoc} */
+    public double getRelativeAccuracy() {
+        return relativeAccuracy;
+    }
+
+    /** {@inheritDoc} */
     public double getResult() throws IllegalStateException {
         if (resultComputed) {
             return result;
@@ -117,7 +115,7 @@ public abstract class UnivariateRealInte
      * @param newResult the result to set
      * @param iterationCount the iteration count to set
      */
-    protected final void setResult(double newResult, int iterationCount) {
+    protected final void setResult(final double newResult, final int iterationCount) {
         this.result         = newResult;
         this.iterationCount = iterationCount;
         this.resultComputed = true;
@@ -132,7 +130,7 @@ public abstract class UnivariateRealInte
     }
 
     /** {@inheritDoc} */
-    public void setMinimalIterationCount(int count) {
+    public void setMinimalIterationCount(final int count) {
         minimalIterationCount = count;
     }
 
@@ -153,8 +151,8 @@ public abstract class UnivariateRealInte
      * @param upper upper endpoint
      * @throws IllegalArgumentException if not interval
      */
-    protected void verifyInterval(double lower, double upper) throws
-        IllegalArgumentException {
+    protected void verifyInterval(final double lower, final double upper)
+        throws IllegalArgumentException {
         if (lower >= upper) {
             throw MathRuntimeException.createIllegalArgumentException(
                     LocalizedFormats.ENDPOINTS_NOT_AN_INTERVAL,
@@ -174,4 +172,27 @@ public abstract class UnivariateRealInte
                     minimalIterationCount, maximalIterationCount);
         }
     }
+
+    /**
+     * Reset the iterations counter to 0.
+     *
+     * @since 2.2
+     */
+    protected void resetIterationsCounter() {
+        iterationCount = 0;
+    }
+
+    /**
+     * Increment the iterations counter by 1.
+     *
+     * @throws MaxCountExceededException if the maximal number
+     * of iterations is exceeded.
+     * @since 2.2
+     */
+    protected void incrementIterationsCounter() {
+        if (++iterationCount > maximalIterationCount) {
+            throw new MaxCountExceededException(maximalIterationCount);
+        }
+    }
+
 }

Modified: commons/proper/math/trunk/src/site/xdoc/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/changes.xml?rev=1084690&r1=1084689&r2=1084690&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/changes.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/changes.xml Wed Mar 23 19:36:04 2011
@@ -52,6 +52,9 @@ The <action> type attribute can be add,u
     If the output is not quite correct, check for invisible trailing spaces!
      -->
     <release version="3.0" date="TBD" description="TBD">
+      <action dev="luc" type="fix" issue="MATH-500" due-to="Gilles Sadowski" >
+        Removed the ConvergingAlgorithm interface and ConvergingAlgorithmImpl class
+      </action>
       <action dev="luc" type="add" issue="MATH-436" due-to="Thomas Neidhart">
         Added a consistency check for number of points with respect to the number
         of clusters in Kmeans++ clustering

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java?rev=1084690&r1=1084689&r2=1084690&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java
(original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/integration/LegendreGaussIntegratorTest.java
Wed Mar 23 19:36:04 2011
@@ -35,7 +35,7 @@ public class LegendreGaussIntegratorTest
     @Test
     public void testSinFunction() throws MathException {
         UnivariateRealFunction f = new SinFunction();
-        UnivariateRealIntegrator integrator = new LegendreGaussIntegrator(5, 64);
+        UnivariateRealIntegratorImpl integrator = new LegendreGaussIntegrator(5, 64);
         integrator.setAbsoluteAccuracy(1.0e-10);
         integrator.setRelativeAccuracy(1.0e-14);
         integrator.setMinimalIterationCount(2);



Mime
View raw message