You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2015/04/11 16:06:08 UTC
[3/5] [math] Remove deprecated classes in optim package.
http://git-wip-us.apache.org/repos/asf/commons-math/blob/e31fde87/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/RandomCirclePointGenerator.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/RandomCirclePointGenerator.java b/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/RandomCirclePointGenerator.java
deleted file mode 100644
index d969b57..0000000
--- a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/RandomCirclePointGenerator.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.math4.optim.nonlinear.vector.jacobian;
-
-import org.apache.commons.math4.distribution.NormalDistribution;
-import org.apache.commons.math4.distribution.RealDistribution;
-import org.apache.commons.math4.distribution.UniformRealDistribution;
-import org.apache.commons.math4.geometry.euclidean.twod.Vector2D;
-import org.apache.commons.math4.random.RandomGenerator;
-import org.apache.commons.math4.random.Well44497b;
-import org.apache.commons.math4.util.FastMath;
-import org.apache.commons.math4.util.MathUtils;
-
-/**
- * Factory for generating a cloud of points that approximate a circle.
- */
-@Deprecated
-public class RandomCirclePointGenerator {
- /** RNG for the x-coordinate of the center. */
- private final RealDistribution cX;
- /** RNG for the y-coordinate of the center. */
- private final RealDistribution cY;
- /** RNG for the parametric position of the point. */
- private final RealDistribution tP;
- /** Radius of the circle. */
- private final double radius;
-
- /**
- * @param x Abscissa of the circle center.
- * @param y Ordinate of the circle center.
- * @param radius Radius of the circle.
- * @param xSigma Error on the x-coordinate of the circumference points.
- * @param ySigma Error on the y-coordinate of the circumference points.
- * @param seed RNG seed.
- */
- public RandomCirclePointGenerator(double x,
- double y,
- double radius,
- double xSigma,
- double ySigma,
- long seed) {
- final RandomGenerator rng = new Well44497b(seed);
- this.radius = radius;
- cX = new NormalDistribution(rng, x, xSigma,
- NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY);
- cY = new NormalDistribution(rng, y, ySigma,
- NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY);
- tP = new UniformRealDistribution(rng, 0, MathUtils.TWO_PI);
- }
-
- /**
- * Point generator.
- *
- * @param n Number of points to create.
- * @return the cloud of {@code n} points.
- */
- public Vector2D[] generate(int n) {
- final Vector2D[] cloud = new Vector2D[n];
- for (int i = 0; i < n; i++) {
- cloud[i] = create();
- }
- return cloud;
- }
-
- /**
- * Create one point.
- *
- * @return a point.
- */
- private Vector2D create() {
- final double t = tP.sample();
- final double pX = cX.sample() + radius * FastMath.cos(t);
- final double pY = cY.sample() + radius * FastMath.sin(t);
-
- return new Vector2D(pX, pY);
- }
-}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/e31fde87/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/RandomStraightLinePointGenerator.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/RandomStraightLinePointGenerator.java b/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/RandomStraightLinePointGenerator.java
deleted file mode 100644
index 41def57..0000000
--- a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/RandomStraightLinePointGenerator.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.math4.optim.nonlinear.vector.jacobian;
-
-import java.awt.geom.Point2D;
-
-import org.apache.commons.math4.distribution.NormalDistribution;
-import org.apache.commons.math4.distribution.RealDistribution;
-import org.apache.commons.math4.distribution.UniformRealDistribution;
-import org.apache.commons.math4.random.RandomGenerator;
-import org.apache.commons.math4.random.Well44497b;
-
-/**
- * Factory for generating a cloud of points that approximate a straight line.
- */
-@Deprecated
-public class RandomStraightLinePointGenerator {
- /** Slope. */
- private final double slope;
- /** Intercept. */
- private final double intercept;
- /** RNG for the x-coordinate. */
- private final RealDistribution x;
- /** RNG for the error on the y-coordinate. */
- private final RealDistribution error;
-
- /**
- * The generator will create a cloud of points whose x-coordinates
- * will be randomly sampled between {@code xLo} and {@code xHi}, and
- * the corresponding y-coordinates will be computed as
- * <pre><code>
- * y = a x + b + N(0, error)
- * </code></pre>
- * where {@code N(mean, sigma)} is a Gaussian distribution with the
- * given mean and standard deviation.
- *
- * @param a Slope.
- * @param b Intercept.
- * @param sigma Standard deviation on the y-coordinate of the point.
- * @param lo Lowest value of the x-coordinate.
- * @param hi Highest value of the x-coordinate.
- * @param seed RNG seed.
- */
- public RandomStraightLinePointGenerator(double a,
- double b,
- double sigma,
- double lo,
- double hi,
- long seed) {
- final RandomGenerator rng = new Well44497b(seed);
- slope = a;
- intercept = b;
- error = new NormalDistribution(rng, 0, sigma,
- NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY);
- x = new UniformRealDistribution(rng, lo, hi);
- }
-
- /**
- * Point generator.
- *
- * @param n Number of points to create.
- * @return the cloud of {@code n} points.
- */
- public Point2D.Double[] generate(int n) {
- final Point2D.Double[] cloud = new Point2D.Double[n];
- for (int i = 0; i < n; i++) {
- cloud[i] = create();
- }
- return cloud;
- }
-
- /**
- * Create one point.
- *
- * @return a point.
- */
- private Point2D.Double create() {
- final double abscissa = x.sample();
- final double yModel = slope * abscissa + intercept;
- final double ordinate = yModel + error.sample();
-
- return new Point2D.Double(abscissa, ordinate);
- }
-}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/e31fde87/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StatisticalReferenceDataset.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StatisticalReferenceDataset.java b/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StatisticalReferenceDataset.java
deleted file mode 100644
index 8265215..0000000
--- a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StatisticalReferenceDataset.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- * 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.math4.optim.nonlinear.vector.jacobian;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.math4.analysis.MultivariateMatrixFunction;
-import org.apache.commons.math4.analysis.MultivariateVectorFunction;
-import org.apache.commons.math4.optim.nonlinear.vector.ModelFunction;
-import org.apache.commons.math4.optim.nonlinear.vector.ModelFunctionJacobian;
-import org.apache.commons.math4.util.MathArrays;
-
-/**
- * This class gives access to the statistical reference datasets provided by the
- * NIST (available
- * <a href="http://www.itl.nist.gov/div898/strd/general/dataarchive.html">here</a>).
- * Instances of this class can be created by invocation of the
- * {@link StatisticalReferenceDatasetFactory}.
- */
-@Deprecated
-public abstract class StatisticalReferenceDataset {
-
- /** The name of this dataset. */
- private final String name;
-
- /** The total number of observations (data points). */
- private final int numObservations;
-
- /** The total number of parameters. */
- private final int numParameters;
-
- /** The total number of starting points for the optimizations. */
- private final int numStartingPoints;
-
- /** The values of the predictor. */
- private final double[] x;
-
- /** The values of the response. */
- private final double[] y;
-
- /**
- * The starting values. {@code startingValues[j][i]} is the value of the
- * {@code i}-th parameter in the {@code j}-th set of starting values.
- */
- private final double[][] startingValues;
-
- /** The certified values of the parameters. */
- private final double[] a;
-
- /** The certified values of the standard deviation of the parameters. */
- private final double[] sigA;
-
- /** The certified value of the residual sum of squares. */
- private double residualSumOfSquares;
-
- /** The least-squares problem. */
- private final LeastSquaresProblem problem;
-
- /**
- * Creates a new instance of this class from the specified data file. The
- * file must follow the StRD format.
- *
- * @param in the data file
- * @throws IOException if an I/O error occurs
- */
- public StatisticalReferenceDataset(final BufferedReader in)
- throws IOException {
-
- final ArrayList<String> lines = new ArrayList<String>();
- for (String line = in.readLine(); line != null; line = in.readLine()) {
- lines.add(line);
- }
- int[] index = findLineNumbers("Data", lines);
- if (index == null) {
- throw new AssertionError("could not find line indices for data");
- }
- this.numObservations = index[1] - index[0] + 1;
- this.x = new double[this.numObservations];
- this.y = new double[this.numObservations];
- for (int i = 0; i < this.numObservations; i++) {
- final String line = lines.get(index[0] + i - 1);
- final String[] tokens = line.trim().split(" ++");
- // Data columns are in reverse order!!!
- this.y[i] = Double.parseDouble(tokens[0]);
- this.x[i] = Double.parseDouble(tokens[1]);
- }
-
- index = findLineNumbers("Starting Values", lines);
- if (index == null) {
- throw new AssertionError(
- "could not find line indices for starting values");
- }
- this.numParameters = index[1] - index[0] + 1;
-
- double[][] start = null;
- this.a = new double[numParameters];
- this.sigA = new double[numParameters];
- for (int i = 0; i < numParameters; i++) {
- final String line = lines.get(index[0] + i - 1);
- final String[] tokens = line.trim().split(" ++");
- if (start == null) {
- start = new double[tokens.length - 4][numParameters];
- }
- for (int j = 2; j < tokens.length - 2; j++) {
- start[j - 2][i] = Double.parseDouble(tokens[j]);
- }
- this.a[i] = Double.parseDouble(tokens[tokens.length - 2]);
- this.sigA[i] = Double.parseDouble(tokens[tokens.length - 1]);
- }
- if (start == null) {
- throw new IOException("could not find starting values");
- }
- this.numStartingPoints = start.length;
- this.startingValues = start;
-
- double dummyDouble = Double.NaN;
- String dummyString = null;
- for (String line : lines) {
- if (line.contains("Dataset Name:")) {
- dummyString = line
- .substring(line.indexOf("Dataset Name:") + 13,
- line.indexOf("(")).trim();
- }
- if (line.contains("Residual Sum of Squares")) {
- final String[] tokens = line.split(" ++");
- dummyDouble = Double.parseDouble(tokens[4].trim());
- }
- }
- if (Double.isNaN(dummyDouble)) {
- throw new IOException(
- "could not find certified value of residual sum of squares");
- }
- this.residualSumOfSquares = dummyDouble;
-
- if (dummyString == null) {
- throw new IOException("could not find dataset name");
- }
- this.name = dummyString;
-
- this.problem = new LeastSquaresProblem();
- }
-
- class LeastSquaresProblem {
- public ModelFunction getModelFunction() {
- return new ModelFunction(new MultivariateVectorFunction() {
- public double[] value(final double[] a) {
- final int n = getNumObservations();
- final double[] yhat = new double[n];
- for (int i = 0; i < n; i++) {
- yhat[i] = getModelValue(getX(i), a);
- }
- return yhat;
- }
- });
- }
-
- public ModelFunctionJacobian getModelFunctionJacobian() {
- return new ModelFunctionJacobian(new MultivariateMatrixFunction() {
- public double[][] value(final double[] a)
- throws IllegalArgumentException {
- final int n = getNumObservations();
- final double[][] j = new double[n][];
- for (int i = 0; i < n; i++) {
- j[i] = getModelDerivatives(getX(i), a);
- }
- return j;
- }
- });
- }
- }
-
- /**
- * Returns the name of this dataset.
- *
- * @return the name of the dataset
- */
- public String getName() {
- return name;
- }
-
- /**
- * Returns the total number of observations (data points).
- *
- * @return the number of observations
- */
- public int getNumObservations() {
- return numObservations;
- }
-
- /**
- * Returns a copy of the data arrays. The data is laid out as follows <li>
- * {@code data[0][i] = x[i]},</li> <li>{@code data[1][i] = y[i]},</li>
- *
- * @return the array of data points.
- */
- public double[][] getData() {
- return new double[][] {
- MathArrays.copyOf(x), MathArrays.copyOf(y)
- };
- }
-
- /**
- * Returns the x-value of the {@code i}-th data point.
- *
- * @param i the index of the data point
- * @return the x-value
- */
- public double getX(final int i) {
- return x[i];
- }
-
- /**
- * Returns the y-value of the {@code i}-th data point.
- *
- * @param i the index of the data point
- * @return the y-value
- */
- public double getY(final int i) {
- return y[i];
- }
-
- /**
- * Returns the total number of parameters.
- *
- * @return the number of parameters
- */
- public int getNumParameters() {
- return numParameters;
- }
-
- /**
- * Returns the certified values of the paramters.
- *
- * @return the values of the parameters
- */
- public double[] getParameters() {
- return MathArrays.copyOf(a);
- }
-
- /**
- * Returns the certified value of the {@code i}-th parameter.
- *
- * @param i the index of the parameter
- * @return the value of the parameter
- */
- public double getParameter(final int i) {
- return a[i];
- }
-
- /**
- * Reurns the certified values of the standard deviations of the parameters.
- *
- * @return the standard deviations of the parameters
- */
- public double[] getParametersStandardDeviations() {
- return MathArrays.copyOf(sigA);
- }
-
- /**
- * Returns the certified value of the standard deviation of the {@code i}-th
- * parameter.
- *
- * @param i the index of the parameter
- * @return the standard deviation of the parameter
- */
- public double getParameterStandardDeviation(final int i) {
- return sigA[i];
- }
-
- /**
- * Returns the certified value of the residual sum of squares.
- *
- * @return the residual sum of squares
- */
- public double getResidualSumOfSquares() {
- return residualSumOfSquares;
- }
-
- /**
- * Returns the total number of starting points (initial guesses for the
- * optimization process).
- *
- * @return the number of starting points
- */
- public int getNumStartingPoints() {
- return numStartingPoints;
- }
-
- /**
- * Returns the {@code i}-th set of initial values of the parameters.
- *
- * @param i the index of the starting point
- * @return the starting point
- */
- public double[] getStartingPoint(final int i) {
- return MathArrays.copyOf(startingValues[i]);
- }
-
- /**
- * Returns the least-squares problem corresponding to fitting the model to
- * the specified data.
- *
- * @return the least-squares problem
- */
- public LeastSquaresProblem getLeastSquaresProblem() {
- return problem;
- }
-
- /**
- * Returns the value of the model for the specified values of the predictor
- * variable and the parameters.
- *
- * @param x the predictor variable
- * @param a the parameters
- * @return the value of the model
- */
- public abstract double getModelValue(final double x, final double[] a);
-
- /**
- * Returns the values of the partial derivatives of the model with respect
- * to the parameters.
- *
- * @param x the predictor variable
- * @param a the parameters
- * @return the partial derivatives
- */
- public abstract double[] getModelDerivatives(final double x,
- final double[] a);
-
- /**
- * <p>
- * Parses the specified text lines, and extracts the indices of the first
- * and last lines of the data defined by the specified {@code key}. This key
- * must be one of
- * </p>
- * <ul>
- * <li>{@code "Starting Values"},</li>
- * <li>{@code "Certified Values"},</li>
- * <li>{@code "Data"}.</li>
- * </ul>
- * <p>
- * In the NIST data files, the line indices are separated by the keywords
- * {@code "lines"} and {@code "to"}.
- * </p>
- *
- * @param lines the line of text to be parsed
- * @return an array of two {@code int}s. First value is the index of the
- * first line, second value is the index of the last line.
- * {@code null} if the line could not be parsed.
- */
- private static int[] findLineNumbers(final String key,
- final Iterable<String> lines) {
- for (String text : lines) {
- boolean flag = text.contains(key) && text.contains("lines") &&
- text.contains("to") && text.contains(")");
- if (flag) {
- final int[] numbers = new int[2];
- final String from = text.substring(text.indexOf("lines") + 5,
- text.indexOf("to"));
- numbers[0] = Integer.parseInt(from.trim());
- final String to = text.substring(text.indexOf("to") + 2,
- text.indexOf(")"));
- numbers[1] = Integer.parseInt(to.trim());
- return numbers;
- }
- }
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/e31fde87/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StatisticalReferenceDatasetFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StatisticalReferenceDatasetFactory.java b/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StatisticalReferenceDatasetFactory.java
deleted file mode 100644
index 99995e8..0000000
--- a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StatisticalReferenceDatasetFactory.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * 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.math4.optim.nonlinear.vector.jacobian;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-import org.apache.commons.math4.util.FastMath;
-
-/**
- * A factory to create instances of {@link StatisticalReferenceDataset} from
- * available resources.
- */
-@Deprecated
-public class StatisticalReferenceDatasetFactory {
-
- private StatisticalReferenceDatasetFactory() {
- // Do nothing
- }
-
- /**
- * Creates a new buffered reader from the specified resource name.
- *
- * @param name the name of the resource
- * @return a buffered reader
- * @throws IOException if an I/O error occurred
- */
- public static BufferedReader createBufferedReaderFromResource(final String name)
- throws IOException {
- final InputStream resourceAsStream;
- resourceAsStream = StatisticalReferenceDatasetFactory.class
- .getResourceAsStream(name);
- if (resourceAsStream == null) {
- throw new IOException("could not find resource " + name);
- }
- return new BufferedReader(new InputStreamReader(resourceAsStream));
- }
-
- public static StatisticalReferenceDataset createKirby2()
- throws IOException {
- final BufferedReader in = createBufferedReaderFromResource("Kirby2.dat");
- StatisticalReferenceDataset dataset = null;
- try {
- dataset = new StatisticalReferenceDataset(in) {
-
- @Override
- public double getModelValue(final double x, final double[] a) {
- final double p = a[0] + x * (a[1] + x * a[2]);
- final double q = 1.0 + x * (a[3] + x * a[4]);
- return p / q;
- }
-
- @Override
- public double[] getModelDerivatives(final double x,
- final double[] a) {
- final double[] dy = new double[5];
- final double p = a[0] + x * (a[1] + x * a[2]);
- final double q = 1.0 + x * (a[3] + x * a[4]);
- dy[0] = 1.0 / q;
- dy[1] = x / q;
- dy[2] = x * dy[1];
- dy[3] = -x * p / (q * q);
- dy[4] = x * dy[3];
- return dy;
- }
- };
- } finally {
- in.close();
- }
- return dataset;
- }
-
- public static StatisticalReferenceDataset createHahn1()
- throws IOException {
- final BufferedReader in = createBufferedReaderFromResource("Hahn1.dat");
- StatisticalReferenceDataset dataset = null;
- try {
- dataset = new StatisticalReferenceDataset(in) {
-
- @Override
- public double getModelValue(final double x, final double[] a) {
- final double p = a[0] + x * (a[1] + x * (a[2] + x * a[3]));
- final double q = 1.0 + x * (a[4] + x * (a[5] + x * a[6]));
- return p / q;
- }
-
- @Override
- public double[] getModelDerivatives(final double x,
- final double[] a) {
- final double[] dy = new double[7];
- final double p = a[0] + x * (a[1] + x * (a[2] + x * a[3]));
- final double q = 1.0 + x * (a[4] + x * (a[5] + x * a[6]));
- dy[0] = 1.0 / q;
- dy[1] = x * dy[0];
- dy[2] = x * dy[1];
- dy[3] = x * dy[2];
- dy[4] = -x * p / (q * q);
- dy[5] = x * dy[4];
- dy[6] = x * dy[5];
- return dy;
- }
- };
- } finally {
- in.close();
- }
- return dataset;
- }
-
- public static StatisticalReferenceDataset createMGH17()
- throws IOException {
- final BufferedReader in = createBufferedReaderFromResource("MGH17.dat");
- StatisticalReferenceDataset dataset = null;
- try {
- dataset = new StatisticalReferenceDataset(in) {
-
- @Override
- public double getModelValue(final double x, final double[] a) {
- return a[0] + a[1] * FastMath.exp(-a[3] * x) + a[2] *
- FastMath.exp(-a[4] * x);
- }
-
- @Override
- public double[] getModelDerivatives(final double x,
- final double[] a) {
- final double[] dy = new double[5];
- dy[0] = 1.0;
- dy[1] = FastMath.exp(-x * a[3]);
- dy[2] = FastMath.exp(-x * a[4]);
- dy[3] = -x * a[1] * dy[1];
- dy[4] = -x * a[2] * dy[2];
- return dy;
- }
- };
- } finally {
- in.close();
- }
- return dataset;
- }
-
- public static StatisticalReferenceDataset createLanczos1()
- throws IOException {
- final BufferedReader in =
- createBufferedReaderFromResource("Lanczos1.dat");
- StatisticalReferenceDataset dataset = null;
- try {
- dataset = new StatisticalReferenceDataset(in) {
-
- @Override
- public double getModelValue(final double x, final double[] a) {
- System.out.println(a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]);
- return a[0] * FastMath.exp(-a[3] * x) +
- a[1] * FastMath.exp(-a[4] * x) +
- a[2] * FastMath.exp(-a[5] * x);
- }
-
- @Override
- public double[] getModelDerivatives(final double x,
- final double[] a) {
- final double[] dy = new double[6];
- dy[0] = FastMath.exp(-x * a[3]);
- dy[1] = FastMath.exp(-x * a[4]);
- dy[2] = FastMath.exp(-x * a[5]);
- dy[3] = -x * a[0] * dy[0];
- dy[4] = -x * a[1] * dy[1];
- dy[5] = -x * a[2] * dy[2];
- return dy;
- }
- };
- } finally {
- in.close();
- }
- return dataset;
- }
-
- /**
- * Returns an array with all available reference datasets.
- *
- * @return the array of datasets
- * @throws IOException if an I/O error occurs
- */
- public StatisticalReferenceDataset[] createAll()
- throws IOException {
- return new StatisticalReferenceDataset[] {
- createKirby2(), createMGH17()
- };
- }
-}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/e31fde87/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StraightLineProblem.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StraightLineProblem.java b/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StraightLineProblem.java
deleted file mode 100644
index e93c604..0000000
--- a/src/test/java/org/apache/commons/math4/optim/nonlinear/vector/jacobian/StraightLineProblem.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * 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.math4.optim.nonlinear.vector.jacobian;
-
-import java.util.ArrayList;
-
-import org.apache.commons.math4.analysis.MultivariateMatrixFunction;
-import org.apache.commons.math4.analysis.MultivariateVectorFunction;
-import org.apache.commons.math4.analysis.UnivariateFunction;
-import org.apache.commons.math4.optim.nonlinear.vector.ModelFunction;
-import org.apache.commons.math4.optim.nonlinear.vector.ModelFunctionJacobian;
-import org.apache.commons.math4.stat.regression.SimpleRegression;
-
-/**
- * Class that models a straight line defined as {@code y = a x + b}.
- * The parameters of problem are:
- * <ul>
- * <li>{@code a}</li>
- * <li>{@code b}</li>
- * </ul>
- * The model functions are:
- * <ul>
- * <li>for each pair (a, b), the y-coordinate of the line.</li>
- * </ul>
- */
-@Deprecated
-class StraightLineProblem {
- /** Cloud of points assumed to be fitted by a straight line. */
- private final ArrayList<double[]> points;
- /** Error (on the y-coordinate of the points). */
- private final double sigma;
-
- /**
- * @param error Assumed error for the y-coordinate.
- */
- public StraightLineProblem(double error) {
- points = new ArrayList<double[]>();
- sigma = error;
- }
-
- public void addPoint(double px, double py) {
- points.add(new double[] { px, py });
- }
-
- /**
- * @return the list of x-coordinates.
- */
- public double[] x() {
- final double[] v = new double[points.size()];
- for (int i = 0; i < points.size(); i++) {
- final double[] p = points.get(i);
- v[i] = p[0]; // x-coordinate.
- }
-
- return v;
- }
-
- /**
- * @return the list of y-coordinates.
- */
- public double[] y() {
- final double[] v = new double[points.size()];
- for (int i = 0; i < points.size(); i++) {
- final double[] p = points.get(i);
- v[i] = p[1]; // y-coordinate.
- }
-
- return v;
- }
-
- public double[] target() {
- return y();
- }
-
- public double[] weight() {
- final double weight = 1 / (sigma * sigma);
- final double[] w = new double[points.size()];
- for (int i = 0; i < points.size(); i++) {
- w[i] = weight;
- }
-
- return w;
- }
-
- public ModelFunction getModelFunction() {
- return new ModelFunction(new MultivariateVectorFunction() {
- public double[] value(double[] params) {
- final Model line = new Model(params[0], params[1]);
-
- final double[] model = new double[points.size()];
- for (int i = 0; i < points.size(); i++) {
- final double[] p = points.get(i);
- model[i] = line.value(p[0]);
- }
-
- return model;
- }
- });
- }
-
- public ModelFunctionJacobian getModelFunctionJacobian() {
- return new ModelFunctionJacobian(new MultivariateMatrixFunction() {
- public double[][] value(double[] point) {
- return jacobian(point);
- }
- });
- }
-
- /**
- * Directly solve the linear problem, using the {@link SimpleRegression}
- * class.
- */
- public double[] solve() {
- final SimpleRegression regress = new SimpleRegression(true);
- for (double[] d : points) {
- regress.addData(d[0], d[1]);
- }
-
- final double[] result = { regress.getSlope(), regress.getIntercept() };
- return result;
- }
-
- private double[][] jacobian(double[] params) {
- final double[][] jacobian = new double[points.size()][2];
-
- for (int i = 0; i < points.size(); i++) {
- final double[] p = points.get(i);
- // Partial derivative wrt "a".
- jacobian[i][0] = p[0];
- // Partial derivative wrt "b".
- jacobian[i][1] = 1;
- }
-
- return jacobian;
- }
-
- /**
- * Linear function.
- */
- public static class Model implements UnivariateFunction {
- final double a;
- final double b;
-
- public Model(double a,
- double b) {
- this.a = a;
- this.b = b;
- }
-
- public double value(double x) {
- return a * x + b;
- }
- }
-}