Return-Path: Delivered-To: apmail-commons-commits-archive@locus.apache.org Received: (qmail 94445 invoked from network); 18 Jan 2009 21:06:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 Jan 2009 21:06:42 -0000 Received: (qmail 85378 invoked by uid 500); 18 Jan 2009 21:06:41 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 85298 invoked by uid 500); 18 Jan 2009 21:06:40 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 85289 invoked by uid 99); 18 Jan 2009 21:06:40 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 18 Jan 2009 13:06:40 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 18 Jan 2009 21:06:37 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 17ECC2388876; Sun, 18 Jan 2009 13:06:16 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r735545 - in /commons/proper/math/trunk/src: java/org/apache/commons/math/analysis/integration/ site/xdoc/ test/org/apache/commons/math/analysis/integration/ Date: Sun, 18 Jan 2009 21:06:15 -0000 To: commits@commons.apache.org From: luc@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090118210616.17ECC2388876@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: luc Date: Sun Jan 18 13:06:15 2009 New Revision: 735545 URL: http://svn.apache.org/viewvc?rev=735545&view=rev Log: improved consistency between solvers/integrators by providing the integrand function as a parameter to integrate rather that at construction, thus allowing reuse of a configured integrator Jira: MATH-218 Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java commons/proper/math/trunk/src/site/xdoc/changes.xml commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/RombergIntegratorTest.java commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/SimpsonIntegratorTest.java commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/TrapezoidIntegratorTest.java Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java?rev=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java (original) +++ commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/RombergIntegrator.java Sun Jan 18 13:06:15 2009 @@ -36,21 +36,39 @@ */ public class RombergIntegrator extends UnivariateRealIntegratorImpl { - /** serializable version identifier */ - private static final long serialVersionUID = -1058849527738180243L; + /** Serializable version identifier. */ + private static final long serialVersionUID = 4616482344304576900L; /** * 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); + } + + /** {@inheritDoc} */ + @Deprecated + public double integrate(final double min, final double max) + throws MaxIterationsExceededException, FunctionEvaluationException, IllegalArgumentException { + return integrate(f, min, max); + } + /** {@inheritDoc} */ - public double integrate(double min, double max) throws MaxIterationsExceededException, - FunctionEvaluationException, IllegalArgumentException { + public double integrate(final UnivariateRealFunction f, + final double min, final double max) + throws MaxIterationsExceededException, FunctionEvaluationException, IllegalArgumentException { int i = 1, j, m = maximalIterationCount + 1; // Array structure here can be improved for better space @@ -61,11 +79,11 @@ verifyInterval(min, max); verifyIterationCount(); - TrapezoidIntegrator qtrap = new TrapezoidIntegrator(this.f); - t[0][0] = qtrap.stage(min, max, 0); + TrapezoidIntegrator qtrap = new TrapezoidIntegrator(); + t[0][0] = qtrap.stage(f, min, max, 0); olds = t[0][0]; while (i <= maximalIterationCount) { - t[i][0] = qtrap.stage(min, max, i); + t[i][0] = qtrap.stage(f, min, max, i); for (j = 1; j <= i; j++) { // Richardson extrapolation coefficient r = (1L << (2 * j)) -1; Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java?rev=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java (original) +++ commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/SimpsonIntegrator.java Sun Jan 18 13:06:15 2009 @@ -35,21 +35,39 @@ */ public class SimpsonIntegrator extends UnivariateRealIntegratorImpl { - /** serializable version identifier */ - private static final long serialVersionUID = 3405465123320678216L; + /** Serializable version identifier. */ + private static final long serialVersionUID = 2535890386567281329L; /** * 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); + } + + /** {@inheritDoc} */ + @Deprecated + public double integrate(final double min, final double max) + throws MaxIterationsExceededException, FunctionEvaluationException, IllegalArgumentException { + return integrate(f, min, max); + } + /** {@inheritDoc} */ - public double integrate(double min, double max) throws MaxIterationsExceededException, - FunctionEvaluationException, IllegalArgumentException { + public double integrate(final UnivariateRealFunction f, + final double min, final double max) + throws MaxIterationsExceededException, FunctionEvaluationException, IllegalArgumentException { int i = 1; double s, olds, t, oldt; @@ -58,17 +76,17 @@ verifyInterval(min, max); verifyIterationCount(); - TrapezoidIntegrator qtrap = new TrapezoidIntegrator(this.f); + TrapezoidIntegrator qtrap = new TrapezoidIntegrator(); if (minimalIterationCount == 1) { - s = (4 * qtrap.stage(min, max, 1) - qtrap.stage(min, max, 0)) / 3.0; + s = (4 * qtrap.stage(f, min, max, 1) - qtrap.stage(f, min, max, 0)) / 3.0; setResult(s, 1); return result; } // Simpson's rule requires at least two trapezoid stages. olds = 0; - oldt = qtrap.stage(min, max, 0); + oldt = qtrap.stage(f, min, max, 0); while (i <= maximalIterationCount) { - t = qtrap.stage(min, max, i); + t = qtrap.stage(f, min, max, i); s = (4 * t - oldt) / 3.0; if (i >= minimalIterationCount) { final double delta = Math.abs(s - olds); Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java?rev=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java (original) +++ commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/TrapezoidIntegrator.java Sun Jan 18 13:06:15 2009 @@ -34,22 +34,32 @@ */ public class TrapezoidIntegrator extends UnivariateRealIntegratorImpl { - /** serializable version identifier */ - private static final long serialVersionUID = 4978222553983172543L; + /** Serializable version identifier. */ + private static final long serialVersionUID = 6963842845860399200L; - /** intermediate result */ + /** Intermediate result. */ 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() { + super(64); + } + + /** * Compute the n-th stage integral of trapezoid rule. This function * should only be called by API integrate() in the package. * To save time it does not verify arguments - caller does. @@ -58,6 +68,7 @@ * arbitrary m sections because this configuration can best utilize the * alrealy computed values.

* + * @param f the integrand function * @param min the lower bound for the interval * @param max the upper bound for the interval * @param n the stage of 1/2 refinement, n = 0 is no refinement @@ -65,8 +76,9 @@ * @throws FunctionEvaluationException if an error occurs evaluating the * function */ - double stage(double min, double max, int n) throws - FunctionEvaluationException { + double stage(final UnivariateRealFunction f, + final double min, final double max, final int n) + throws FunctionEvaluationException { long i, np; double x, spacing, sum = 0; @@ -89,8 +101,16 @@ } /** {@inheritDoc} */ - public double integrate(double min, double max) throws MaxIterationsExceededException, - FunctionEvaluationException, IllegalArgumentException { + @Deprecated + public double integrate(final double min, final double max) + throws MaxIterationsExceededException, FunctionEvaluationException, IllegalArgumentException { + return integrate(f, min, max); + } + + /** {@inheritDoc} */ + public double integrate(final UnivariateRealFunction f, + final double min, final double max) + throws MaxIterationsExceededException, FunctionEvaluationException, IllegalArgumentException { int i = 1; double t, oldt; @@ -99,9 +119,9 @@ verifyInterval(min, max); verifyIterationCount(); - oldt = stage(min, max, 0); + oldt = stage(f, min, max, 0); while (i <= maximalIterationCount) { - t = stage(min, max, i); + t = stage(f, min, max, i); if (i >= minimalIterationCount) { final double delta = Math.abs(t - oldt); final double rLimit = Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java?rev=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java (original) +++ commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegrator.java Sun Jan 18 13:06:15 2009 @@ -19,6 +19,7 @@ import org.apache.commons.math.ConvergenceException; import org.apache.commons.math.ConvergingAlgorithm; import org.apache.commons.math.FunctionEvaluationException; +import org.apache.commons.math.analysis.UnivariateRealFunction; /** * Interface for univariate real integration algorithms. @@ -70,11 +71,30 @@ * function * @throws IllegalArgumentException if min > max or the endpoints do not * satisfy the requirements specified by the integrator + * @deprecated replaced by {@link #integrate(UnivariateRealFunction, double, double)} + * since 2.0 */ + @Deprecated double integrate(double min, double max) throws ConvergenceException, FunctionEvaluationException, IllegalArgumentException; /** + * Integrate the function in the given interval. + * + * @param min the lower bound for the interval + * @param max the upper bound for the interval + * @return the value of integral + * @throws ConvergenceException if the maximum iteration count is exceeded + * or the integrator detects convergence problems otherwise + * @throws FunctionEvaluationException if an error occurs evaluating the + * function + * @throws IllegalArgumentException if min > max or the endpoints do not + * satisfy the requirements specified by the integrator + */ + double integrate(UnivariateRealFunction f, double min, double max) throws ConvergenceException, + FunctionEvaluationException, IllegalArgumentException; + + /** * Get the result of the last run of the integrator. * * @return the last result Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java?rev=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java (original) +++ commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/integration/UnivariateRealIntegratorImpl.java Sun Jan 18 13:06:15 2009 @@ -44,7 +44,10 @@ /** the last computed integral */ protected double result; - /** the integrand function */ + /** 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; /** @@ -54,7 +57,10 @@ * @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 { @@ -74,6 +80,25 @@ } /** + * 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 + */ + protected UnivariateRealIntegratorImpl(final int defaultMaximalIterationCount) + throws IllegalArgumentException { + super(defaultMaximalIterationCount, 1.0e-15); + + // parameters that are problem specific + setRelativeAccuracy(1.0e-6); + this.defaultMinimalIterationCount = 3; + this.minimalIterationCount = defaultMinimalIterationCount; + + verifyIterationCount(); + } + + /** * Access the last computed integral. * * @return the last computed integral 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=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/site/xdoc/changes.xml (original) +++ commons/proper/math/trunk/src/site/xdoc/changes.xml Sun Jan 18 13:06:15 2009 @@ -76,9 +76,9 @@ Added support for multi-dimensional Fourier transform. - The root solvers now take the function to solve as a parameter to - the solve methods, thus allowing to reuse the same solver for different - functions. + The root solvers and the integrators now take the function to solve as a + parameter to the solve/integrate methods, thus allowing to reuse the same + solver/integrator for different functions. Added setter methods for rows and columns in matrices. Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/RombergIntegratorTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/RombergIntegratorTest.java?rev=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/RombergIntegratorTest.java (original) +++ commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/RombergIntegratorTest.java Sun Jan 18 13:06:15 2009 @@ -39,17 +39,17 @@ */ public void testSinFunction() throws MathException { UnivariateRealFunction f = new SinFunction(); - UnivariateRealIntegrator integrator = new RombergIntegrator(f); + UnivariateRealIntegrator integrator = new RombergIntegrator(); double min, max, expected, result, tolerance; min = 0; max = Math.PI; expected = 2; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = -Math.PI/3; max = 0; expected = -0.5; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); } @@ -58,22 +58,22 @@ */ public void testQuinticFunction() throws MathException { UnivariateRealFunction f = new QuinticFunction(); - UnivariateRealIntegrator integrator = new RombergIntegrator(f); + UnivariateRealIntegrator integrator = new RombergIntegrator(); double min, max, expected, result, tolerance; min = 0; max = 1; expected = -1.0/48; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = 0; max = 0.5; expected = 11.0/768; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = -1; max = 4; expected = 2048/3.0 - 78 + 1.0/48; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); } @@ -82,11 +82,11 @@ */ public void testParameters() throws Exception { UnivariateRealFunction f = new SinFunction(); - UnivariateRealIntegrator integrator = new RombergIntegrator(f); + UnivariateRealIntegrator integrator = new RombergIntegrator(); try { // bad interval - integrator.integrate(1, -1); + integrator.integrate(f, 1, -1); fail("Expecting IllegalArgumentException - bad interval"); } catch (IllegalArgumentException ex) { // expected @@ -95,7 +95,7 @@ // bad iteration limits integrator.setMinimalIterationCount(5); integrator.setMaximalIterationCount(4); - integrator.integrate(-1, 1); + integrator.integrate(f, -1, 1); fail("Expecting IllegalArgumentException - bad iteration limits"); } catch (IllegalArgumentException ex) { // expected @@ -104,7 +104,7 @@ // bad iteration limits integrator.setMinimalIterationCount(10); integrator.setMaximalIterationCount(50); - integrator.integrate(-1, 1); + integrator.integrate(f, -1, 1); fail("Expecting IllegalArgumentException - bad iteration limits"); } catch (IllegalArgumentException ex) { // expected Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/SimpsonIntegratorTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/SimpsonIntegratorTest.java?rev=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/SimpsonIntegratorTest.java (original) +++ commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/SimpsonIntegratorTest.java Sun Jan 18 13:06:15 2009 @@ -38,17 +38,17 @@ */ public void testSinFunction() throws MathException { UnivariateRealFunction f = new SinFunction(); - UnivariateRealIntegrator integrator = new SimpsonIntegrator(f); + UnivariateRealIntegrator integrator = new SimpsonIntegrator(); double min, max, expected, result, tolerance; min = 0; max = Math.PI; expected = 2; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = -Math.PI/3; max = 0; expected = -0.5; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); } @@ -57,22 +57,22 @@ */ public void testQuinticFunction() throws MathException { UnivariateRealFunction f = new QuinticFunction(); - UnivariateRealIntegrator integrator = new SimpsonIntegrator(f); + UnivariateRealIntegrator integrator = new SimpsonIntegrator(); double min, max, expected, result, tolerance; min = 0; max = 1; expected = -1.0/48; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = 0; max = 0.5; expected = 11.0/768; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = -1; max = 4; expected = 2048/3.0 - 78 + 1.0/48; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); } @@ -81,11 +81,11 @@ */ public void testParameters() throws Exception { UnivariateRealFunction f = new SinFunction(); - UnivariateRealIntegrator integrator = new SimpsonIntegrator(f); + UnivariateRealIntegrator integrator = new SimpsonIntegrator(); try { // bad interval - integrator.integrate(1, -1); + integrator.integrate(f, 1, -1); fail("Expecting IllegalArgumentException - bad interval"); } catch (IllegalArgumentException ex) { // expected @@ -94,7 +94,7 @@ // bad iteration limits integrator.setMinimalIterationCount(5); integrator.setMaximalIterationCount(4); - integrator.integrate(-1, 1); + integrator.integrate(f, -1, 1); fail("Expecting IllegalArgumentException - bad iteration limits"); } catch (IllegalArgumentException ex) { // expected @@ -103,7 +103,7 @@ // bad iteration limits integrator.setMinimalIterationCount(10); integrator.setMaximalIterationCount(99); - integrator.integrate(-1, 1); + integrator.integrate(f, -1, 1); fail("Expecting IllegalArgumentException - bad iteration limits"); } catch (IllegalArgumentException ex) { // expected Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/TrapezoidIntegratorTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/TrapezoidIntegratorTest.java?rev=735545&r1=735544&r2=735545&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/TrapezoidIntegratorTest.java (original) +++ commons/proper/math/trunk/src/test/org/apache/commons/math/analysis/integration/TrapezoidIntegratorTest.java Sun Jan 18 13:06:15 2009 @@ -38,17 +38,17 @@ */ public void testSinFunction() throws MathException { UnivariateRealFunction f = new SinFunction(); - UnivariateRealIntegrator integrator = new TrapezoidIntegrator(f); + UnivariateRealIntegrator integrator = new TrapezoidIntegrator(); double min, max, expected, result, tolerance; min = 0; max = Math.PI; expected = 2; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = -Math.PI/3; max = 0; expected = -0.5; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); } @@ -57,22 +57,22 @@ */ public void testQuinticFunction() throws MathException { UnivariateRealFunction f = new QuinticFunction(); - UnivariateRealIntegrator integrator = new TrapezoidIntegrator(f); + UnivariateRealIntegrator integrator = new TrapezoidIntegrator(); double min, max, expected, result, tolerance; min = 0; max = 1; expected = -1.0/48; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = 0; max = 0.5; expected = 11.0/768; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); min = -1; max = 4; expected = 2048/3.0 - 78 + 1.0/48; tolerance = Math.abs(expected * integrator.getRelativeAccuracy()); - result = integrator.integrate(min, max); + result = integrator.integrate(f, min, max); assertEquals(expected, result, tolerance); } @@ -81,11 +81,11 @@ */ public void testParameters() throws Exception { UnivariateRealFunction f = new SinFunction(); - UnivariateRealIntegrator integrator = new TrapezoidIntegrator(f); + UnivariateRealIntegrator integrator = new TrapezoidIntegrator(); try { // bad interval - integrator.integrate(1, -1); + integrator.integrate(f, 1, -1); fail("Expecting IllegalArgumentException - bad interval"); } catch (IllegalArgumentException ex) { // expected @@ -94,7 +94,7 @@ // bad iteration limits integrator.setMinimalIterationCount(5); integrator.setMaximalIterationCount(4); - integrator.integrate(-1, 1); + integrator.integrate(f, -1, 1); fail("Expecting IllegalArgumentException - bad iteration limits"); } catch (IllegalArgumentException ex) { // expected @@ -103,7 +103,7 @@ // bad iteration limits integrator.setMinimalIterationCount(10); integrator.setMaximalIterationCount(99); - integrator.integrate(-1, 1); + integrator.integrate(f, -1, 1); fail("Expecting IllegalArgumentException - bad iteration limits"); } catch (IllegalArgumentException ex) { // expected