Hello.

On Thu, 13 Oct 2016 12:28:30 +0200, Liudmila Belenki wrote:
Dear  Sirs or Madams,

I use  the library org.apache.commons.math3  for the approximation of
data set by Levenberg-Marquard method.

As example, I try to run a test program QuadraticProblem.
There is an error by calling of a class  PointVectorValuePair


Exception in thread "main" java.lang.Error: Unresolved compilation problems:
        The type
org.apache.commons.math3.fitting.leastsquares.LeastSquaresProblem
cannot be resolved. It is indirectly referenced from required .class
files
        The method optimize(LeastSquaresProblem) from the type
LevenbergMarquardtOptimizer refers to the missing type
LeastSquaresProblem

        at

org.apache.commons.math3.fitting.leastsquares.QuadraticProblem.main(QuadraticProblem.java:79)


Please explain me, how I can the error eliminate.

It's a compilation problem.
But I can't see right-away what causes it.
Which environment do you use to compile this class (ant, maven, other?)?

First thing I'd suggest is to not define your own classes
within the library's namespace (see below).

Thanks.

Regards,
Liudmila Belenki




package org.apache.commons.math3.fitting.leastsquares;
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

You should not define the classes in _our_ package, as it could
obscure the source of the problem.

Use something like
  package my;
or
  package liudmila;


Regards,
Gilles

import java.util.*;
import org.apache.commons.math3.linear.ArrayRealVector;
import org.apache.commons.math3.linear.RealMatrix;
import org.apache.commons.math3.analysis.DifferentiableMultivariateFunction;
import org.apache.commons.math3.analysis.MultivariateMatrixFunction;
import org.apache.commons.math3.exception.ConvergenceException;
import org.apache.commons.math3.exception.util.LocalizedFormats;
import org.apache.commons.math3.optim.ConvergenceChecker;
import org.apache.commons.math3.optim.PointValuePair;
import org.apache.commons.math3.util.Incrementor;
import org.apache.commons.math3.util.Precision;
import org.apache.commons.math3.util.FastMath;
import org.apache.commons.math3.stat.descriptive.UnivariateStatistic;
import org.apache.commons.math3.stat.descriptive.rank.Median;
import org.apache.commons.math3.stat.descriptive.rank.Percentile;
import org.apache.commons.math3.stat.correlation.*;
import org.apache.commons.math3.fitting.*;
import org.apache.commons.math3.optimization.fitting.*;
import org.apache.commons.math3.stat.clustering.*;
import org.apache.commons.math3.stat.*;
import org.apache.commons.math3.fitting.leastsquares.RecognizerLibrary;
import org.apache.commons.math3.stat.descriptive.UnivariateStatistic;
import

org.apache.commons.math3.stat.descriptive.MultivariateSummaryStatistics;
import org.apache.commons.math3.exception.MathIllegalStateException;
import org.apache.commons.math3.exception.util.LocalizedFormats;
import org.apache.commons.math3.analysis.MultivariateMatrixFunction;
import org.apache.commons.math3.analysis.MultivariateVectorFunction;
//import

org.apache.commons.math3.fitting.leastsquares.LeastSquaresProblem.Evaluation;
import org.apache.commons.math3.linear.Array2DRowRealMatrix;
import org.apache.commons.math3.linear.ArrayRealVector;
import org.apache.commons.math3.linear.DiagonalMatrix;
import org.apache.commons.math3.linear.EigenDecomposition;
import org.apache.commons.math3.linear.RealMatrix;
import org.apache.commons.math3.linear.RealVector;
import org.apache.commons.math3.optim.AbstractOptimizationProblem;
import org.apache.commons.math3.optim.ConvergenceChecker;
import org.apache.commons.math3.optim.PointVectorValuePair;
import org.apache.commons.math3.util.FastMath;
import org.apache.commons.math3.util.Incrementor;
import org.apache.commons.math3.util.Pair;


//private static class QuadraticProblem
public class QuadraticProblem {

        public static void main(String[] args) {

                QuadraticProblem problem = new QuadraticProblem();

                 problem.addPoint(1, 34.234064369);
                 problem.addPoint(2, 68.2681162306);
                 problem.addPoint(3, 118.6158990846);
                 problem.addPoint(4, 184.1381972386);
                 problem.addPoint(5, 266.5998779163);
                 problem.addPoint(6, 364.1477352516);
                 problem.addPoint(7, 478.0192260919);
                 problem.addPoint(8, 608.1409492707);
                 problem.addPoint(9, 754.5988686671);
                 problem.addPoint(10, 916.1288180859);

                 LevenbergMarquardtOptimizer optimizer = new
LevenbergMarquardtOptimizer(100, 1e-10, 1e-10, 1e-10, 0);

                 final double[] weights = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };

                 final double[] initialSolution = {1, 1, 1};


                 PointVectorValuePair optimum =
                                 optimizer.optimize(100,
                 problem,
                 problem.calculateTarget(),
                 weights,
                 initialSolution);

                 final double[] optimalValues = optimum.getPoint();

                 System.out.println("A: " + optimalValues[0]);
                 System.out.println("B: " + optimalValues[1]);
                 System.out.println("C: " + optimalValues[2]);

        }

//private static final long serialVersionUID = 7072187082052755854L;
Serializable
private List<Double> x;
private List<Double> y;

public QuadraticProblem() {
    x = new ArrayList<Double>();
    y = new ArrayList<Double>();
}

public void addPoint(double x, double y) {
    this.x.add(x);
    this.y.add(y);
}

public double[] calculateTarget() {
    double[] target = new double[y.size()];
    for (int i = 0; i < y.size(); i++) {
        target[i] = y.get(i).doubleValue();
    }
    return target;
}

private double[][] jacobian(double[] variables) {
    double[][] jacobian = new double[x.size()][3];
    for (int i = 0; i < jacobian.length; ++i) {
        jacobian[i][0] = x.get(i) * x.get(i);
        jacobian[i][1] = x.get(i);
        jacobian[i][2] = 1.0;
    }
    return jacobian;
}

public double[] value(double[] variables) {
    double[] values = new double[x.size()];
    for (int i = 0; i < values.length; ++i) {
        values[i] = (variables[0] * x.get(i) + variables[1]) *
x.get(i) + variables[2];
    }
    return values;
}

public MultivariateMatrixFunction jacobian() {
    return new MultivariateMatrixFunction() {
private static final long serialVersionUID = -8673650298627399464L;
        public double[][] value(double[] point) {
            return jacobian(point);
        }
    };
}
}


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org

Reply via email to