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/12/27 18:33:38 UTC
svn commit: r894083 -
/commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/fitting/CurveFitterTest.java
Author: luc
Date: Sun Dec 27 17:33:37 2009
New Revision: 894083
URL: http://svn.apache.org/viewvc?rev=894083&view=rev
Log:
added tests showing that issues MATH-303 and MATH-304 are both invalid.
Jira: MATH-303, MATH-304
Added:
commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/fitting/CurveFitterTest.java (with props)
Added: commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/fitting/CurveFitterTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/fitting/CurveFitterTest.java?rev=894083&view=auto
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/fitting/CurveFitterTest.java (added)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/fitting/CurveFitterTest.java Sun Dec 27 17:33:37 2009
@@ -0,0 +1,91 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.commons.math.optimization.fitting;
+
+import org.apache.commons.math.FunctionEvaluationException;
+import org.apache.commons.math.optimization.OptimizationException;
+import org.apache.commons.math.optimization.general.LevenbergMarquardtOptimizer;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CurveFitterTest {
+
+ @Test
+ public void testMath303()
+ throws OptimizationException, FunctionEvaluationException {
+
+ LevenbergMarquardtOptimizer optimizer = new LevenbergMarquardtOptimizer();
+ CurveFitter fitter = new CurveFitter(optimizer);
+ fitter.addObservedPoint(2.805d, 0.6934785852953367d);
+ fitter.addObservedPoint(2.74333333333333d, 0.6306772025518496d);
+ fitter.addObservedPoint(1.655d, 0.9474675497289684);
+ fitter.addObservedPoint(1.725d, 0.9013594835804194d);
+
+ ParametricRealFunction sif = new SimpleInverseFunction();
+
+ double[] initialguess1 = new double[1];
+ initialguess1[0] = 1.0d;
+ Assert.assertEquals(1, fitter.fit(sif, initialguess1).length);
+
+ double[] initialguess2 = new double[2];
+ initialguess2[0] = 1.0d;
+ initialguess2[1] = .5d;
+ Assert.assertEquals(2, fitter.fit(sif, initialguess2).length);
+
+ }
+
+ @Test
+ public void testMath304()
+ throws OptimizationException, FunctionEvaluationException {
+
+ LevenbergMarquardtOptimizer optimizer = new LevenbergMarquardtOptimizer();
+ CurveFitter fitter = new CurveFitter(optimizer);
+ fitter.addObservedPoint(2.805d, 0.6934785852953367d);
+ fitter.addObservedPoint(2.74333333333333d, 0.6306772025518496d);
+ fitter.addObservedPoint(1.655d, 0.9474675497289684);
+ fitter.addObservedPoint(1.725d, 0.9013594835804194d);
+
+ ParametricRealFunction sif = new SimpleInverseFunction();
+
+ double[] initialguess1 = new double[1];
+ initialguess1[0] = 1.0d;
+ Assert.assertEquals(1.6357215104109237, fitter.fit(sif, initialguess1)[0], 1.0e-14);
+
+ double[] initialguess2 = new double[1];
+ initialguess2[0] = 10.0d;
+ Assert.assertEquals(1.6357215104109237, fitter.fit(sif, initialguess1)[0], 1.0e-14);
+
+ }
+
+ private static class SimpleInverseFunction implements ParametricRealFunction {
+
+ public double value(double x, double[] parameters) {
+ return parameters[0] / x + (parameters.length < 2 ? 0 : parameters[1]);
+ }
+
+ public double[] gradient(double x, double[] doubles) {
+ double[] gradientVector = new double[doubles.length];
+ gradientVector[0] = 1 / x;
+ if (doubles.length >= 2) {
+ gradientVector[1] = 1;
+ }
+ return gradientVector;
+ }
+ }
+
+}
Propchange: commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/fitting/CurveFitterTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/fitting/CurveFitterTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision