final double p = 4.1;
final HarmonicOscillator f = new HarmonicOscillator(a, w, p);
final WeightedObservedPoints points = new WeightedObservedPoints();
for (double x = 0.0; x < 10.0; x += 0.1) {
points.add(1, x, f.value(x) + 0.01 * randomizer.nextGaussian());
}
final HarmonicCurveFitter fitter = HarmonicCurveFitter.create()
.withStartPoint(new double[] { 0.15, 3.6, 4.5 });
final double[] fitted = fitter.fit(points.toList());