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.
Thanks.

Regards,
Liudmila Belenki 




package org.apache.commons.math3.fitting.leastsquares;
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);
        }
    };
}
}

Reply via email to