Author: luc
Date: Wed Aug 24 16:03:16 2011
New Revision: 1161181
URL: http://svn.apache.org/viewvc?rev=1161181&view=rev
Log:
Refactored integration API for consistency with solvers API.
Now the main convergence parameters are set in the constructor and remain fixed.
JIRA: MATH-501
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
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=1161181&r1=1161180&r2=1161181&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 Aug 24 16:03:16 2011
@@ -214,8 +214,7 @@ public class LegendreGaussIntegrator ext
// check convergence
if ((iterations.getCount() + 1 >= minimalIterationCount) && (delta
<= limit)) {
- setResult(t);
- return result;
+ return t;
}
// prepare next iteration
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=1161181&r1=1161180&r2=1161181&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 Aug 24 16:03:16 2011
@@ -131,8 +131,7 @@ public class RombergIntegrator extends U
final double delta = FastMath.abs(s - olds);
final double rLimit = relativeAccuracy * (FastMath.abs(olds) +
FastMath.abs(s)) * 0.5;
if ((delta <= rLimit) || (delta <= absoluteAccuracy)) {
- setResult(s);
- return result;
+ return s;
}
}
olds = s;
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=1161181&r1=1161180&r2=1161181&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 Aug 24 16:03:16 2011
@@ -102,10 +102,9 @@ public class SimpsonIntegrator extends U
TrapezoidIntegrator qtrap = new TrapezoidIntegrator();
if (minimalIterationCount == 1) {
- final double s = (4 * qtrap.stage(this, 1) - qtrap.stage(this, 0))
/ 3.0;
- setResult(s);
- return result;
+ return (4 * qtrap.stage(this, 1) - qtrap.stage(this, 0)) / 3.0;
}
+
// Simpson's rule requires at least two trapezoid stages.
double olds = 0;
double oldt = qtrap.stage(this, 0);
@@ -118,8 +117,7 @@ public class SimpsonIntegrator extends U
final double rLimit =
relativeAccuracy * (FastMath.abs(olds) + FastMath.abs(s))
* 0.5;
if ((delta <= rLimit) || (delta <= absoluteAccuracy)) {
- setResult(s);
- return result;
+ return s;
}
}
olds = s;
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=1161181&r1=1161180&r2=1161181&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 Aug 24 16:03:16 2011
@@ -151,8 +151,7 @@ public class TrapezoidIntegrator extends
final double rLimit =
relativeAccuracy * (FastMath.abs(oldt) + FastMath.abs(t))
* 0.5;
if ((delta <= rLimit) || (delta <= absoluteAccuracy)) {
- setResult(t);
- return result;
+ return t;
}
}
oldt = t;
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=1161181&r1=1161180&r2=1161181&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 Aug 24 16:03:16 2011
@@ -78,28 +78,15 @@ public interface UnivariateRealIntegrato
MathIllegalArgumentException, NullArgumentException;
/**
- * Get the result of the last run of the integrator.
- *
- * @return the last result
- * @throws IllegalStateException if there is no result available, either
- * because no result was yet computed or the last attempt failed
- */
- double getResult() throws IllegalStateException;
-
- /**
* Get the number of function evaluations of the last run of the
integrator.
* @return number of function evaluations
- * @throws IllegalStateException if there is no result available, either
- * because no result was yet computed or the last attempt failed
*/
- int getEvaluations() throws IllegalStateException;
+ int getEvaluations();
/**
* Get the number of iterations of the last run of the integrator.
* @return number of iterations
- * @throws IllegalStateException if there is no result available, either
- * because no result was yet computed or the last attempt failed
*/
- int getIterations() throws IllegalStateException;
+ int getIterations();
}
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=1161181&r1=1161180&r2=1161181&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 Aug 24 16:03:16 2011
@@ -17,7 +17,6 @@
package org.apache.commons.math.analysis.integration;
import org.apache.commons.math.ConvergenceException;
-import org.apache.commons.math.MathRuntimeException;
import org.apache.commons.math.analysis.UnivariateRealFunction;
import org.apache.commons.math.analysis.solvers.UnivariateRealSolverUtils;
import org.apache.commons.math.exception.MathIllegalArgumentException;
@@ -26,7 +25,6 @@ import org.apache.commons.math.exception
import org.apache.commons.math.exception.NullArgumentException;
import org.apache.commons.math.exception.NumberIsTooSmallException;
import org.apache.commons.math.exception.TooManyEvaluationsException;
-import org.apache.commons.math.exception.util.LocalizedFormats;
import org.apache.commons.math.util.Incrementor;
import org.apache.commons.math.util.MathUtils;
@@ -74,12 +72,6 @@ public abstract class UnivariateRealInte
/** Upper bound for the interval. */
protected double max;
- /** indicates whether an integral has been computed */
- protected boolean resultComputed = false;
-
- /** the last computed integral */
- protected double result;
-
/**
* Construct an integrator with given accuracies and iteration counts.
* <p>
@@ -189,41 +181,13 @@ public abstract class UnivariateRealInte
}
/** {@inheritDoc} */
- public double getResult() throws IllegalStateException {
- if (resultComputed) {
- return result;
- } else {
- throw
MathRuntimeException.createIllegalStateException(LocalizedFormats.NO_RESULT_AVAILABLE);
- }
- }
-
- /** {@inheritDoc} */
- public int getEvaluations() throws IllegalStateException {
- if (resultComputed) {
- return evaluations.getCount();
- } else {
- throw
MathRuntimeException.createIllegalStateException(LocalizedFormats.NO_RESULT_AVAILABLE);
- }
+ public int getEvaluations() {
+ return evaluations.getCount();
}
/** {@inheritDoc} */
- public int getIterations() throws IllegalStateException {
- if (resultComputed) {
- return iterations.getCount();
- } else {
- throw
MathRuntimeException.createIllegalStateException(LocalizedFormats.NO_RESULT_AVAILABLE);
- }
- }
-
- /**
- * Convenience function for implementations.
- *
- * @param newResult the result to set
- * @param newCount the iteration count to set
- */
- protected final void setResult(final double newResult) {
- result = newResult;
- resultComputed = true;
+ public int getIterations() {
+ return iterations.getCount();
}
/**
@@ -272,7 +236,6 @@ public abstract class UnivariateRealInte
evaluations.setMaximalCount(maxEval);
evaluations.resetCount();
iterations.resetCount();
- resultComputed = false;
}
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=1161181&r1=1161180&r2=1161181&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/changes.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/changes.xml Wed Aug 24 16:03:16 2011
@@ -52,10 +52,13 @@ 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-501" >
+ Refactored integration API for consistency with solvers API. Now the
main convergence
+ parameters are set in the constructor and remain fixed.
+ </action>
<action dev="luc" type="fix" issue="MATH-464" >
- Changed integration API for consistency with solvers API. Now the
main convergence
- parameters are set in the constructor and remain fixed, but a
maximal number of function
- evaluation must be provided at each call to the integration method.
+ Added a maximal number of function evaluations to the integration
method, similar
+ to what is done in the solvers API.
</action>
<action dev="psteitz" type="update" issue="MATH-449" due-to="Patrick
Meyer">
Added storeless covariance implementation.