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/08/25 12:06:00 UTC
svn commit: r1377245 - in /commons/proper/math/trunk/src: changes/
main/java/org/apache/commons/math3/analysis/solvers/ site/xdoc/userguide/
test/java/org/apache/commons/math3/analysis/solvers/
Author: luc
Date: Sat Aug 25 10:06:00 2012
New Revision: 1377245
URL: http://svn.apache.org/viewvc?rev=1377245&view=rev
Log:
Integrated the new differentiation framework in the solvers package.
As discussed on the developers mailing list, a separate
NewtonRaphsonSolver has been set up using the new interfaces, and the
older NewtonSolver has been deprecated. It should be removed in 4.0.
Added:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractUnivariateDifferentiableSolver.java
- copied, changed from r1377244, commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolver.java
- copied, changed from r1377244, commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/UnivariateDifferentiableSolver.java
- copied, changed from r1377244, commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java
commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolverTest.java
- copied, changed from r1377244, commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java
Modified:
commons/proper/math/trunk/src/changes/changes.xml
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/BaseAbstractUnivariateSolver.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java
commons/proper/math/trunk/src/site/xdoc/userguide/analysis.xml
commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/BracketingNthOrderBrentSolverTest.java
commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java
Modified: commons/proper/math/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/changes/changes.xml?rev=1377245&r1=1377244&r2=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/changes/changes.xml (original)
+++ commons/proper/math/trunk/src/changes/changes.xml Sat Aug 25 10:06:00 2012
@@ -52,6 +52,11 @@ If the output is not quite correct, chec
<body>
<release version="3.1" date="TBD" description="
">
+ <action dev="luc" type="add" >
+ Added a NewtonRaphsonSolver taht use the new differentiation package
+ to define the function to solve. This class is intended to replace the
+ former NewtonSolver which is deprecated.
+ </action>
<action dev="psteitz" type="update" issue="MATH-850">
Added RandomDataGenerator to replace RandomDataImpl and deprecated
RandomData interface and RandomDataImpl class. Deprecated
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java?rev=1377245&r1=1377244&r2=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java Sat Aug 25 10:06:00 2012
@@ -26,7 +26,9 @@ import org.apache.commons.math3.analysis
*
* @since 3.0
* @version $Id$
+ * @deprecated as of 3.1, replaced by {@link AbstractUnivariateDifferentiableSolver}
*/
+@Deprecated
public abstract class AbstractDifferentiableUnivariateSolver
extends BaseAbstractUnivariateSolver<DifferentiableUnivariateFunction>
implements DifferentiableUnivariateSolver {
Copied: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractUnivariateDifferentiableSolver.java (from r1377244, commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java)
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractUnivariateDifferentiableSolver.java?p2=commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractUnivariateDifferentiableSolver.java&p1=commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java&r1=1377244&r2=1377245&rev=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractDifferentiableUnivariateSolver.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/AbstractUnivariateDifferentiableSolver.java Sat Aug 25 10:06:00 2012
@@ -17,28 +17,29 @@
package org.apache.commons.math3.analysis.solvers;
-import org.apache.commons.math3.analysis.DifferentiableUnivariateFunction;
-import org.apache.commons.math3.analysis.UnivariateFunction;
+import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
+import org.apache.commons.math3.analysis.differentiation.UnivariateDifferentiable;
/**
* Provide a default implementation for several functions useful to generic
* solvers.
*
- * @since 3.0
+ * @since 3.1
* @version $Id$
*/
-public abstract class AbstractDifferentiableUnivariateSolver
- extends BaseAbstractUnivariateSolver<DifferentiableUnivariateFunction>
- implements DifferentiableUnivariateSolver {
- /** Derivative of the function to solve. */
- private UnivariateFunction functionDerivative;
+public abstract class AbstractUnivariateDifferentiableSolver
+ extends BaseAbstractUnivariateSolver<UnivariateDifferentiable>
+ implements UnivariateDifferentiableSolver {
+
+ /** Function to solve. */
+ private UnivariateDifferentiable function;
/**
* Construct a solver with given absolute accuracy.
*
* @param absoluteAccuracy Maximum absolute error.
*/
- protected AbstractDifferentiableUnivariateSolver(final double absoluteAccuracy) {
+ protected AbstractUnivariateDifferentiableSolver(final double absoluteAccuracy) {
super(absoluteAccuracy);
}
@@ -49,9 +50,9 @@ public abstract class AbstractDifferenti
* @param absoluteAccuracy Maximum absolute error.
* @param functionValueAccuracy Maximum function value error.
*/
- protected AbstractDifferentiableUnivariateSolver(final double relativeAccuracy,
- final double absoluteAccuracy,
- final double functionValueAccuracy) {
+ protected AbstractUnivariateDifferentiableSolver(final double relativeAccuracy,
+ final double absoluteAccuracy,
+ final double functionValueAccuracy) {
super(relativeAccuracy, absoluteAccuracy, functionValueAccuracy);
}
@@ -59,22 +60,22 @@ public abstract class AbstractDifferenti
* Compute the objective function value.
*
* @param point Point at which the objective function must be evaluated.
- * @return the objective function value at specified point.
+ * @return the objective function value and derivative at specified point.
* @throws org.apache.commons.math3.exception.TooManyEvaluationsException
* if the maximal number of evaluations is exceeded.
*/
- protected double computeDerivativeObjectiveValue(double point) {
+ protected DerivativeStructure computeObjectiveValueAndDerivative(double point) {
incrementEvaluationCount();
- return functionDerivative.value(point);
+ return function.value(new DerivativeStructure(1, 1, 0, point));
}
/**
* {@inheritDoc}
*/
@Override
- protected void setup(int maxEval, DifferentiableUnivariateFunction f,
+ protected void setup(int maxEval, UnivariateDifferentiable f,
double min, double max, double startValue) {
super.setup(maxEval, f, min, max, startValue);
- functionDerivative = f.derivative();
+ function = f;
}
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/BaseAbstractUnivariateSolver.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/BaseAbstractUnivariateSolver.java?rev=1377245&r1=1377244&r2=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/BaseAbstractUnivariateSolver.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/BaseAbstractUnivariateSolver.java Sat Aug 25 10:06:00 2012
@@ -287,7 +287,7 @@ public abstract class BaseAbstractUnivar
* Method {@link #computeObjectiveValue(double)} calls this method internally.
* It is provided for subclasses that do not exclusively use
* {@code computeObjectiveValue} to solve the function.
- * See e.g. {@link AbstractDifferentiableUnivariateSolver}.
+ * See e.g. {@link AbstractUnivariateDifferentiableSolver}.
*/
protected void incrementEvaluationCount() {
try {
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java?rev=1377245&r1=1377244&r2=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java Sat Aug 25 10:06:00 2012
@@ -24,6 +24,7 @@ import org.apache.commons.math3.analysis
* Implementations will search for only one zero in the given interval.
*
* @version $Id$
+ * @deprecated as of 3.1, replaced by {@link UnivariateDifferentiableSolver}
*/
public interface DifferentiableUnivariateSolver
extends BaseUnivariateSolver<DifferentiableUnivariateFunction> {}
Copied: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolver.java (from r1377244, commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java)
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolver.java?p2=commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolver.java&p1=commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java&r1=1377244&r2=1377245&rev=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolver.java Sat Aug 25 10:06:00 2012
@@ -17,25 +17,26 @@
package org.apache.commons.math3.analysis.solvers;
-import org.apache.commons.math3.analysis.DifferentiableUnivariateFunction;
+import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
+import org.apache.commons.math3.analysis.differentiation.UnivariateDifferentiable;
import org.apache.commons.math3.util.FastMath;
/**
* Implements <a href="http://mathworld.wolfram.com/NewtonsMethod.html">
- * Newton's Method</a> for finding zeros of real univariate functions.
- * <p>
- * The function should be continuous but not necessarily smooth.</p>
+ * Newton's Method</a> for finding zeros of real univariate differentiable
+ * functions.
*
+ * @since 3.1
* @version $Id$
*/
-public class NewtonSolver extends AbstractDifferentiableUnivariateSolver {
+public class NewtonRaphsonSolver extends AbstractUnivariateDifferentiableSolver {
/** Default absolute accuracy. */
private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
/**
* Construct a solver.
*/
- public NewtonSolver() {
+ public NewtonRaphsonSolver() {
this(DEFAULT_ABSOLUTE_ACCURACY);
}
/**
@@ -43,7 +44,7 @@ public class NewtonSolver extends Abstra
*
* @param absoluteAccuracy Absolute accuracy.
*/
- public NewtonSolver(double absoluteAccuracy) {
+ public NewtonRaphsonSolver(double absoluteAccuracy) {
super(absoluteAccuracy);
}
@@ -61,7 +62,7 @@ public class NewtonSolver extends Abstra
* if {@code min >= max}.
*/
@Override
- public double solve(int maxEval, final DifferentiableUnivariateFunction f,
+ public double solve(int maxEval, final UnivariateDifferentiable f,
final double min, final double max) {
return super.solve(maxEval, f, UnivariateSolverUtils.midpoint(min, max));
}
@@ -77,7 +78,8 @@ public class NewtonSolver extends Abstra
double x0 = startValue;
double x1;
while (true) {
- x1 = x0 - (computeObjectiveValue(x0) / computeDerivativeObjectiveValue(x0));
+ final DerivativeStructure y0 = computeObjectiveValueAndDerivative(x0);
+ x1 = x0 - (y0.getValue() / y0.getPartialDerivative(1));
if (FastMath.abs(x1 - x0) <= absoluteAccuracy) {
return x1;
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java?rev=1377245&r1=1377244&r2=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/NewtonSolver.java Sat Aug 25 10:06:00 2012
@@ -26,8 +26,10 @@ import org.apache.commons.math3.util.Fas
* <p>
* The function should be continuous but not necessarily smooth.</p>
*
+ * @deprecated as of 3.1, replaced by {@link NewtonRaphsonSolverTest}
* @version $Id$
*/
+@Deprecated
public class NewtonSolver extends AbstractDifferentiableUnivariateSolver {
/** Default absolute accuracy. */
private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6;
Copied: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/UnivariateDifferentiableSolver.java (from r1377244, commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java)
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/UnivariateDifferentiableSolver.java?p2=commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/UnivariateDifferentiableSolver.java&p1=commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java&r1=1377244&r2=1377245&rev=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/solvers/UnivariateDifferentiableSolver.java Sat Aug 25 10:06:00 2012
@@ -16,14 +16,15 @@
*/
package org.apache.commons.math3.analysis.solvers;
-import org.apache.commons.math3.analysis.DifferentiableUnivariateFunction;
+import org.apache.commons.math3.analysis.differentiation.UnivariateDifferentiable;
/**
* Interface for (univariate real) rootfinding algorithms.
* Implementations will search for only one zero in the given interval.
*
+ * @since 3.1
* @version $Id$
*/
-public interface DifferentiableUnivariateSolver
- extends BaseUnivariateSolver<DifferentiableUnivariateFunction> {}
+public interface UnivariateDifferentiableSolver
+ extends BaseUnivariateSolver<UnivariateDifferentiable> {}
Modified: commons/proper/math/trunk/src/site/xdoc/userguide/analysis.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/userguide/analysis.xml?rev=1377245&r1=1377244&r2=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/userguide/analysis.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/userguide/analysis.xml Sat Aug 25 10:06:00 2012
@@ -94,11 +94,11 @@
<subsection name="4.3 Root-finding" href="rootfinding">
<p>
<a href="../apidocs/org/apache/commons/math3/analysis/solvers/UnivariateSolver.html">
- UnivariateSolver</a>, <a href="../apidocs/org/apache/commons/math3/analysis/solvers/DifferentiableUnivariateSolver.html">
- DifferentiableUnivariateSolver</a> and <a href="../apidocs/org/apache/commons/math3/analysis/solvers/PolynomialSolver.html">
+ UnivariateSolver</a>, <a href="../apidocs/org/apache/commons/math3/analysis/solvers/UnivariateDifferentiableSolver.html">
+ UnivariateDifferentiableSolver</a> and <a href="../apidocs/org/apache/commons/math3/analysis/solvers/PolynomialSolver.html">
PolynomialSolver</a> provide means to find roots of
<a href="../apidocs/org/apache/commons/math3/analysis/UnivariateFunction.html">univariate real-valued functions</a>,
- <a href="../apidocs/org/apache/commons/math3/analysis/DifferentiableUnivariateFunction.html">differentiable univariate real-valued functions</a>,
+ <a href="../apidocs/org/apache/commons/math3/analysis/differentiation/UnivariateDifferentiable.html">differentiable univariate real-valued functions</a>,
and <a href="../apidocs/org/apache/commons/math3/analysis/polynomials/PolynomialFunction.html">polynomial functions</a> respectively.
A root is the value where the function takes the value 0. Commons-Math
includes implementations of the several root-finding algorithms:
@@ -155,8 +155,8 @@
<td>no</td>
</tr>
<tr>
- <td><a href="../apidocs/org/apache/commons/math3/analysis/solvers/NewtonSolver.html">Newton's Method</a></td>
- <td><a href="../apidocs/org/apache/commons/math3/analysis/DifferentiableUnivariateFunction.html">differentiable univariate real-valued functions</a></td>
+ <td><a href="../apidocs/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolver.html">Newton-Raphson's Method</a></td>
+ <td><a href="../apidocs/org/apache/commons/math3/analysis/differentiation/UnivariateDifferentiable.html">differentiable univariate real-valued functions</a></td>
<td>quadratic, non-guaranteed</td>
<td>no</td>
<td>no</td>
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/BracketingNthOrderBrentSolverTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/BracketingNthOrderBrentSolverTest.java?rev=1377245&r1=1377244&r2=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/BracketingNthOrderBrentSolverTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/BracketingNthOrderBrentSolverTest.java Sat Aug 25 10:06:00 2012
@@ -17,7 +17,6 @@
package org.apache.commons.math3.analysis.solvers;
-import org.apache.commons.math3.analysis.DifferentiableUnivariateFunction;
import org.apache.commons.math3.analysis.QuinticFunction;
import org.apache.commons.math3.analysis.UnivariateFunction;
import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
@@ -150,37 +149,32 @@ public final class BracketingNthOrderBre
private void compare(final UnivariateDifferentiable f,
double root, double min, double max) {
- DifferentiableUnivariateFunction df = new DifferentiableUnivariateFunction() {
- public double value(double x) {
- return f.value(x);
- }
-
- public UnivariateFunction derivative() {
- return new UnivariateFunction() {
- public double value(double x) {
- return f.value(new DerivativeStructure(1, 1, 0, x)).getPartialDerivative(1);
- }
- };
- }
- };
- NewtonSolver newton = new NewtonSolver(1.0e-12);
+ NewtonRaphsonSolver newton = new NewtonRaphsonSolver(1.0e-12);
BracketingNthOrderBrentSolver bracketing =
new BracketingNthOrderBrentSolver(1.0e-12, 1.0e-12, 1.0e-18, 5);
double resultN;
try {
- resultN = newton.solve(100, df, min, max);
+ resultN = newton.solve(100, f, min, max);
} catch (TooManyEvaluationsException tmee) {
resultN = Double.NaN;
}
double resultB;
try {
- resultB = bracketing.solve(100, df, min, max);
+ resultB = bracketing.solve(100, f, min, max);
} catch (TooManyEvaluationsException tmee) {
resultB = Double.NaN;
}
Assert.assertEquals(root, resultN, newton.getAbsoluteAccuracy());
Assert.assertEquals(root, resultB, bracketing.getAbsoluteAccuracy());
- Assert.assertTrue(bracketing.getEvaluations() < newton.getEvaluations());
+
+ // bracketing solver evaluates only function value, we set the weight to 1
+ final int weightedBracketingEvaluations = bracketing.getEvaluations();
+
+ // Newton-Raphson solver evaluates both function value and derivative, we set the weight to 2
+ final int weightedNewtonEvaluations = 2 * newton.getEvaluations();
+
+ Assert.assertTrue(weightedBracketingEvaluations < weightedNewtonEvaluations);
+
}
private static abstract class TestFunction implements UnivariateDifferentiable {
Copied: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolverTest.java (from r1377244, commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java)
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolverTest.java?p2=commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolverTest.java&p1=commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java&r1=1377244&r2=1377245&rev=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonRaphsonSolverTest.java Sat Aug 25 10:06:00 2012
@@ -16,10 +16,7 @@
*/
package org.apache.commons.math3.analysis.solvers;
-import org.apache.commons.math3.analysis.DifferentiableUnivariateFunction;
import org.apache.commons.math3.analysis.QuinticFunction;
-import org.apache.commons.math3.analysis.UnivariateFunction;
-import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
import org.apache.commons.math3.analysis.differentiation.UnivariateDifferentiable;
import org.apache.commons.math3.analysis.function.Sin;
import org.apache.commons.math3.util.FastMath;
@@ -30,16 +27,16 @@ import org.junit.Test;
/**
* @version $Id$
*/
-public final class NewtonSolverTest {
+public final class NewtonRaphsonSolverTest {
/**
*
*/
@Test
public void testSinZero() {
- DifferentiableUnivariateFunction f = new Sin();
+ UnivariateDifferentiable f = new Sin();
double result;
- NewtonSolver solver = new NewtonSolver();
+ NewtonRaphsonSolver solver = new NewtonRaphsonSolver();
result = solver.solve(100, f, 3, 4);
Assert.assertEquals(result, FastMath.PI, solver.getAbsoluteAccuracy());
@@ -54,25 +51,10 @@ public final class NewtonSolverTest {
*/
@Test
public void testQuinticZero() {
- final UnivariateDifferentiable q = new QuinticFunction();
- DifferentiableUnivariateFunction f = new DifferentiableUnivariateFunction() {
-
- public double value(double x) {
- return q.value(x);
- }
-
- public UnivariateFunction derivative() {
- return new UnivariateFunction() {
- public double value(double x) {
- return q.value(new DerivativeStructure(1, 1, 0, x)).getPartialDerivative(1);
- }
- };
- }
-
- };
+ final UnivariateDifferentiable f = new QuinticFunction();
double result;
- NewtonSolver solver = new NewtonSolver();
+ NewtonRaphsonSolver solver = new NewtonRaphsonSolver();
result = solver.solve(100, f, -0.2, 0.2);
Assert.assertEquals(result, 0, solver.getAbsoluteAccuracy());
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java?rev=1377245&r1=1377244&r2=1377245&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/solvers/NewtonSolverTest.java Sat Aug 25 10:06:00 2012
@@ -29,7 +29,9 @@ import org.junit.Test;
/**
* @version $Id$
+ * @deprecated
*/
+@Deprecated
public final class NewtonSolverTest {
/**
*