commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From er...@apache.org
Subject svn commit: r1423558 - /commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/interpolation/SmoothingPolynomialBicubicSplineInterpolator.java
Date Tue, 18 Dec 2012 18:07:46 GMT
Author: erans
Date: Tue Dec 18 18:07:45 2012
New Revision: 1423558

URL: http://svn.apache.org/viewvc?rev=1423558&view=rev
Log:
Removed usage of deprecated classes.

Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/interpolation/SmoothingPolynomialBicubicSplineInterpolator.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/interpolation/SmoothingPolynomialBicubicSplineInterpolator.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/interpolation/SmoothingPolynomialBicubicSplineInterpolator.java?rev=1423558&r1=1423557&r2=1423558&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/interpolation/SmoothingPolynomialBicubicSplineInterpolator.java
(original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/analysis/interpolation/SmoothingPolynomialBicubicSplineInterpolator.java
Tue Dec 18 18:07:45 2012
@@ -18,10 +18,13 @@ package org.apache.commons.math3.analysi
 
 import org.apache.commons.math3.exception.DimensionMismatchException;
 import org.apache.commons.math3.exception.NoDataException;
+import org.apache.commons.math3.exception.NotPositiveException;
 import org.apache.commons.math3.util.MathArrays;
-import org.apache.commons.math3.optimization.general.GaussNewtonOptimizer;
-import org.apache.commons.math3.optimization.fitting.PolynomialFitter;
+import org.apache.commons.math3.util.Precision;
+import org.apache.commons.math3.optim.nonlinear.vector.jacobian.GaussNewtonOptimizer;
+import org.apache.commons.math3.fitting.PolynomialFitter;
 import org.apache.commons.math3.analysis.polynomials.PolynomialFunction;
+import org.apache.commons.math3.optim.SimpleVectorValueChecker;
 
 /**
  * Generates a bicubic interpolation function.
@@ -35,8 +38,12 @@ public class SmoothingPolynomialBicubicS
     extends BicubicSplineInterpolator {
     /** Fitter for x. */
     private final PolynomialFitter xFitter;
+    /** Degree of the fitting polynomial. */
+    private final int xDegree;
     /** Fitter for y. */
     private final PolynomialFitter yFitter;
+    /** Degree of the fitting polynomial. */
+    private final int yDegree;
 
     /**
      * Default constructor. The degree of the fitting polynomials is set to 3.
@@ -60,8 +67,21 @@ public class SmoothingPolynomialBicubicS
      */
     public SmoothingPolynomialBicubicSplineInterpolator(int xDegree,
                                                         int yDegree) {
-        xFitter = new PolynomialFitter(xDegree, new GaussNewtonOptimizer(false));
-        yFitter = new PolynomialFitter(yDegree, new GaussNewtonOptimizer(false));
+        if (xDegree < 0) {
+            throw new NotPositiveException(xDegree);
+        }
+        if (yDegree < 0) {
+            throw new NotPositiveException(yDegree);
+        }
+        this.xDegree = xDegree;
+        this.yDegree = yDegree;
+
+        final double safeFactor = 1e2;
+        final SimpleVectorValueChecker checker
+            = new SimpleVectorValueChecker(safeFactor * Precision.EPSILON,
+                                           safeFactor * Precision.SAFE_MIN);
+        xFitter = new PolynomialFitter(new GaussNewtonOptimizer(false, checker));
+        yFitter = new PolynomialFitter(new GaussNewtonOptimizer(false, checker));
     }
 
     /**
@@ -101,7 +121,9 @@ public class SmoothingPolynomialBicubicS
                 xFitter.addObservedPoint(1, xval[i], fval[i][j]);
             }
 
-            yPolyX[j] = new PolynomialFunction(xFitter.fit());
+            // Initial guess for the fit is zero for each coefficients (of which
+            // there are "xDegree" + 1).
+            yPolyX[j] = new PolynomialFunction(xFitter.fit(new double[xDegree + 1]));
         }
 
         // For every knot (xval[i], yval[j]) of the grid, calculate corrected
@@ -123,7 +145,9 @@ public class SmoothingPolynomialBicubicS
                 yFitter.addObservedPoint(1, yval[j], fval_1[i][j]);
             }
 
-            xPolyY[i] = new PolynomialFunction(yFitter.fit());
+            // Initial guess for the fit is zero for each coefficients (of which
+            // there are "yDegree" + 1).
+            xPolyY[i] = new PolynomialFunction(yFitter.fit(new double[yDegree + 1]));
         }
 
         // For every knot (xval[i], yval[j]) of the grid, calculate corrected



Mime
View raw message