Se si sta parlando di interpolazione polinomiale
https://en.wikipedia.org/wiki/Polynomial_interpolation
non ti resta che compilare la matrice di Vandermonde.
Commons di apache ha una libreria (math) che ti linko qui:
http://commons.apache.org/proper/commons-math/
che ha già implementato ogni cosa. Ti riporto un piccolo esempio da cui articolare
dove la classe Point (in realtà inutile, ma visto che ho riutilizzato codice di un vecchio progetto me la sono trovata tra i piedi) altro non è che una classe che modellizza un punto nel piano (2D) e che ha solo due campi, x, y e metodi getter e setter.codice:import org.apache.commons.math3.linear.*; /* .... .... */ private RealMatrix VandermondeMatrix; private RealVector Constants, CoefficientsMatrix; private int degree; private RealMatrix calculateVandermondeMatrix() { double[][] values = new double[degree+1][degree+1]; for (int i = 0; i < values.length; i++) { for (int j = 0; j < (values[i].length-1); j++) { values[i][j] = Math.pow(points[i].getX(), degree-j); } values[i][degree] = 1; } VandermondeMatrix = new Array2DRowRealMatrix(values); return VandermondeMatrix; } private RealVector getConstants() { double[] values = new double[degree+1]; for (int i = 0; i < values.length; i++) { values[i] = points[i].getY(); } Constants = new ArrayRealVector(values) ; return Constants; } private RealVector calculateCoefficientsMatrix() { DecompositionSolver solver = new LUDecomposition(this.VandermondeMatrix).getSolver(); return solver.solve(Constants); } public PolynomialInterpolation(Point[] points) { this.points = points; this.degree = points.length-1; }