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