public void linearDataExtrapolatesLinearValues() { double[] data = new double[100]; for (int i = 0; (i < data.Length); i++) { data[i] = ((0.25 * i) * -1); } var builder = new InterpolatorBuilder(); for (int degree = 1; (degree < 3); degree++) { builder.Width = 7; builder.Degree = degree; LoessInterpolator loess = builder.interpolate(data); double y = loess.smoothOnePoint(-100, 0, (data.Length - 1)); Assert.True(y != 0); Assert.Equal(((0.25 * -100) * -1), y, 5); y = loess.smoothOnePoint(1000, 0, (data.Length - 1)); Assert.True(y != 0); Assert.Equal(((0.25 * 1000) * -1), y, 5); // } }
// Utility functions... private void checkFitToData(double[] data, LoessInterpolator loess, int precision) { for (int i = 0; (i < data.Length); i++) { Double y = loess.smoothOnePoint(i, 0, (data.Length - 1)); Assert.True(y != 0); Assert.Equal(data[i], y, precision); //ssertEquals(String.format("Bad value at %d", i), data[i], y, eps); } }